
In einem Bash-Skript möchte ich eine Datei bearbeiten. Gibt es eine Möglichkeit, ein Makro in Vim zu schreiben, es zu speichern und es dann im Bash-Skript aufzurufen?
Antwort1
Kein Problem: Erzeugen Sie die Makrodatei mit vi-Befehlen. Beispiel:
:1,$s/a/b/g
:wq
Dann rennevi -s macro_file data_file
Ein Ratschlag: Versuchen Sie zu diesem Zweck sed
/ awk
und anstelle von zu verwenden.vi
Antwort2
Dies ist ein Beispiel für die Verwendung von vim zum Erstellen von HTML-Versionen von Dateien mit vim:
for f in *.c; do
vim -f +"syn on" +"run! syntax/2html.vim" +"wq" +"q" "$f"
done
Antwort3
Sie könnten verwenden ex
, das mit vim geliefert wird und das Befehlszeilentool für vim ist.
Erans Antwort ist definitiv richtig, aber ich würde persönlich verwenden ex -c
( vim -c
ist auch möglich):
> echo asdf > blub
> ex blub -c "normal a_" -c "normal l.l.l." -c wq
> cat blub
a_s_d_f_
Dies ist meine bevorzugte Methode, da nicht mehrere Dateien vorhanden sind.
Wenn Sie beispielsweise „escape“ auf „jj“ umstellen, können Sie problemlos kompliziertere normale Anweisungen erstellen:
ex file -c "normal a_jjl.l.l." -c wq
Zu Ihrer Information:
- normalsendet Briefe im Normalmodus an
- wqbeendet das Programm
- um mehrere Befehle in einem String zu senden (keine zusätzliche Option -c), verwenden Sie das Pipe-Zeichen |. Aber: Das funktioniert bei normal nicht.
- Dies funktioniert nur für 10 -c's. Für weitere Befehle würde ich jedoch empfehlen, eine Datei zu erstellen.