Phrasen ersetzen

Post Reply
Message
Author
User avatar
chef
Posts: 76
Joined: Tue 18 Jun 2013, 15:17
Contact:

Phrasen ersetzen

#1 Post by chef »

Ich habe ein fehlendes Puzzlestück entdeckt.

Nun, da ich wieder ein paar Sachen schreiben muß, fehlt mir ein wichtiges Tool. Ich habe früher Autohotkey benutzt. Damit konnte man enorm viel machen, aber eine Funktion fehlt mir besonders.

Code: Select all

::MFG::Mit freundlichen Grüßen
::sg::Sehr geehrte Damen und Herren
Mit diesen Zeilen konnte ich in jedem Texteditor (also wirklich jedem) Abkürzungen ersetzen. Also mfg gegen Mit freundlichen Grüßen.

Das funktionierte ohne die Datei zu speichern oder mit suchen-ersetzen oder so.

AHK funktioniert unter Linux nur mit Wine und dann nur im Bereich von Wine.

Ich bin mir sicher, das das auch unter Linux geht. Aber wo setze ich an?

R-S-H
Posts: 487
Joined: Mon 18 Feb 2013, 12:47

#2 Post by R-S-H »

Hi.

Um Textteile innerhalb einer Datei durch andere Textteile zu ersetzen, verwende ich den Befehl: sed

Beispiel:

sed -i 's|Alter-Text|Neuer-Text|' /Pfad-und-Name-der-Datei

Bei Textteilen mit Leerzeichen eine Variable verwenden:

AlterText="Alter Text"
NeuerText="Neuer Text"

sed -i 's|$AlterText|$NeuerText|' /Pfad-und-Name-der-Datei

bzw. in entsprechenden Fällen auch mit "" und/oder '' experimentieren.

Soweit ich weiß, werden ALLE entsprechenden Textteile ersetzt - aber wohl nur je einmal je Textzeile. Also deutliche Abkürzungen/Phrasen verwenden!

Es gibt möglicherweise noch andere Funktionen hierfür, aber die sind mir -im Moment jedenfalls- unbekannt.

Viel Spaß beim Ausprobieren und Programmieren.
[b][url=http://lazy-puppy.weebly.com]LazY Puppy Home
The new LazY Puppy Information Centre[/url][/b]

User avatar
Karl Godt
Posts: 4199
Joined: Sun 20 Jun 2010, 13:52
Location: Kiel,Germany

#3 Post by Karl Godt »

Abiword kann plugins laden . Eines heisst LoadBindings .
Aber es laeuft bei mir heute anscheinend ueberhaupt nichts mit plugins .

Plugins scheinen bei der ./configure ation explizit ermoeglicht werden zu muessen, haben anscheinend nicht kompiliert soweit ich meine Quell-Archive zurueckverfolgen kann . Vielleicht hatte ich einst inkompatible kompilierte plugins installiert ..

Jedenfalls in LoadBindings.cpp sucht es nach
// load the keybindings.xml file from the application directory, if present
UT_UTF8String appFile = XAP_App::getApp()->getAbiSuiteAppDir();
appFile += "/keybindings.xml";

Mein heutiges abiword ist 2.6.3 .

User avatar
chef
Posts: 76
Joined: Tue 18 Jun 2013, 15:17
Contact:

#4 Post by chef »

Vielen Dank für die Antworten.

Das wäre dann die Alternative. Das sed ist auch ein Beispiel, das ich im Internet gefunden habe.

Aber eigentlich war es früher so, dass ich in die Adressleiste von Firefox eingebe murga. und das Script vervollständigt das dann zu http://www.murga-linux.com/puppy/postin ... 43a81b4f4e.

Oder beim Livechat gebe ich ein hallo: und es vervollständigt sich Guten Tag, mein Name ist und ich habe folgendes Anliegen.

Oder bei Facebook trage ich Face. ein und es vervollständigt mit Benutzer und Passwort.

Also alles ohne den Text vorher zu speichern.

_____________________________

Es könnte also ein Programmiertool sein, das das aktiver Fenster auf vorhandenen Text überprüft.

Ich hatte eigentlich gehofft, das es als Script geht, Also, ich bin ja noch ein echter Neuling. xprop scheint der erste Ansatz zu sein:

xprop -id `xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | awk '{print $5}'` | grep "WM_CLASS(STRING)"


Sonst müßte ich noch mal mit lazarus und basic gucken.

User avatar
chef
Posts: 76
Joined: Tue 18 Jun 2013, 15:17
Contact:

#5 Post by chef »

Hier habe ich einen neuen Ansatz gefunden;

Code: Select all

xclip -o > /tmp/neu
sed -i 's|sgh.|Sehr geehrter Herr|' /tmp/neu
geany /tmp/neu
Den Schritt mit geany habe ich nur eingefügt, weil ich im Moment nicht weiter weiß.

Wenn es jetzt gelänge mit der Tastenkombination Strg+A gleichzeitig den markierten Text in die Zwischenablage zu kopieren (ohne Strg+C), dann das Script auszuführen und alles wieder zurück in die Zwischenablage.

Dann könnte ich mit Strg+V allses korrigiert wieder haben.

Die Tastenkombination legt man wohl in der .xbindkeyssrc im Verzeichnis /bin fest.

Könnte das was sein?

User avatar
chef
Posts: 76
Joined: Tue 18 Jun 2013, 15:17
Contact:

#6 Post by chef »

So das ist nun der Code der funktioniert:

Code: Select all

datei=/tmp/neu
xclip -o > $datei
sed -i 's|sgh.|Sehr geehrter Herr|' $datei
sed -i 's|mfg.|Mit freundlichen Grüßen|' $datei
xclip -in -selection clipboard $datei

Jetzt möchte ich das das Script mit der Tastenkombination Strg+c gestartet wird und die Um- und Sonderlaute werden nicht richtig geschrieben. Dann müssen noch die Inhalte in eine Sonderdatei.

Ich glaube für die Umlaute gibt es Zahlenwerte, ähnlich wie bei html und strg+c hat was mit xbindkeys zu tun.

Nun gut, ich bastele mal weiter ...

User avatar
chef
Posts: 76
Joined: Tue 18 Jun 2013, 15:17
Contact:

#7 Post by chef »

und weiter gehts.

Ich kann eine Verknüpfung zur Datei anlegen und dann den Shortcut Strg+C festlegen.

In die Datei habe ich das Script eingefügt:

Code: Select all

#!/bin/sh
datei=/tmp/neu.txt
xclip -o > $datei
sed -i 's|sgh.|Sehr geehrter Herr|g' $datei
sed -i 's|mfg.|Mit freundlichen Grüßen|g' $datei
xclip -in -selection clipboard "$datei"
Jetzt funktioniert es tatsächlich. Mit Strg+A, Strg+C, Strg+V kann ich den Text ändern. Das ist nicht komfortabel, aber im Moment die beste Lösung.


Aber was ist mit den Umlauten. Das ü wird zu ü. Und leider nicht nur in den ersetzten Worten, sondern im ganzen Text.


Was kann das sein??

R-S-H
Posts: 487
Joined: Mon 18 Feb 2013, 12:47

#8 Post by R-S-H »

Aber was ist mit den Umlauten. Das ü wird zu ü. Und leider nicht nur in den ersetzten Worten, sondern im ganzen Text.

Was kann das sein??

Code: Select all

REPLACIT="ü"
sed -i 's|'$REPLACIT'|ü|' $CLEARDAT
REPLACIT="Ü"
sed -i 's|'$REPLACIT'|Ü|' $CLEARDAT
REPLACIT="ö"
sed -i 's|'$REPLACIT'|ö|' $CLEARDAT
REPLACIT="Ö"
sed -i 's|'$REPLACIT'|Ö|' $CLEARDAT
REPLACIT="ä"
sed -i 's|'$REPLACIT'|ä|' $CLEARDAT
REPLACIT="Ä"
sed -i 's|'$REPLACIT'|Ä|' $CLEARDAT
Das ist für XML. Einfach das zwischen den " " stehende bei REPLACIT= durch Deine Hyroglyphen ersetzen. Vielleicht funktioniert's...
[b][url=http://lazy-puppy.weebly.com]LazY Puppy Home
The new LazY Puppy Information Centre[/url][/b]

User avatar
chef
Posts: 76
Joined: Tue 18 Jun 2013, 15:17
Contact:

#9 Post by chef »

Danke für Deine Hilfe. Leider geht es auch damit nicht.

Ich speichere ja den Text aus der Zwischneablage in einer Datei. Da wird der Text ersetzt und die Umlaute stimmen.

Erst beim zurück-kopieren in den Zwischenspeicher zerfällt dann alles.
Ich habe auch konvertierungen und was sonst noch versucht, aber nichts hilft.

Inzwischen verfolge ich den Plan nicht mehr.

Ich habe mit Gambas ein neues System entworfen. Ich kann nun mit der Tastenkombination das Programm starten und dann aus verschiedenen Textbausteinen wählen. Beim draufklicken kopiert sich der Text in den Zwischenspeicher und beendet sich. Somit habe ich nun keine Abkürzungen mehr sondern füge den Text direkt ein. Hier gibt es keine Probleme mit Umlauten.

Das Ding ist auch gut und spielt sich hier ein. Wahrscheinlich ist das sogar besser und schneller.

Ich versuche nun, das der Text direkt an das letzte aktive Fenster gesendet wird. Das muß auch gehen, aber die Frage stelle ich dann im Gambas Forum.

Ich habe mich hier im Forum ein wenig rar gemacht. Das liegt einfach daran, daß ich hier so extrem viel gelernt habe.

Danke also ....

Post Reply