Führen Sie ein vim-Makro in einem Bash-Skript aus

8

In einem Bash-Skript möchte ich eine Datei bearbeiten. Gibt es eine Möglichkeit, ein Makro in vim zu schreiben, zu speichern und dann im Bash-Skript aufzurufen?

hknik
quelle

Antworten:

8

Kein Problem: Erstellen Sie die Makrodatei mit vi-Befehlen. Zum Beispiel:

:1,$s/a/b/g
:wq

Dann renne vi -s macro_file data_file

Ein Rat: Versuchen Sie, sed/ awkund statt vifür diesen Zweck zu verwenden

Eran Ben-Natan
quelle
Und es gibt die äquivalente, aber unklarere +Syntax wie in: vim +PluginInstall +qallfür die Installation von Vundle .
Ciro Santilli 法轮功 病毒 审查 六四 事件 28
2

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
Gilles Quenot
quelle
2

Sie können verwenden ex, das mit vim geliefert wird und das Befehlszeilenprogramm für vim ist.

Erans Antwort ist definitiv richtig, aber ich würde sie persönlich verwenden ex -c( vim -cist 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 mein bevorzugter Weg, da es nicht mehrere Dateien gibt.

Wenn Sie Escape beispielsweise jj neu zuordnen, können Sie leicht kompliziertere normale Anweisungen machen:

ex file -c "normal a_jjl.l.l." -c wq

Für Ihre Information:

  • normal sendet Briefe im normalen Modus an
  • wq beendet das Programm
  • Verwenden Sie das Pipe-Zeichen |, um mehrere Befehle in einer Zeichenfolge zu senden (keine zusätzliche Option -c). Aber: Das funktioniert im Normalfall nicht.
  • Dies funktioniert nur für 10-c. Für weitere Befehle würde ich jedoch empfehlen, eine Datei zu erstellen.
David Halter
quelle