Der Gnats Bug Tracker verfügt über einen Befehl (edit-pr), der ein Ticket in $ EDITOR öffnet. Mein $ EDITOR ist VIM, und wenn dieser Befehl das Ticket in $ EDITOR öffnet, möchte ich automatisch einige Skriptänderungen vornehmen, ohne zusätzliche Tastenanschläge vornehmen zu müssen.
Gibt es eine Möglichkeit, ein VIM-Skript zu schreiben, das so nicht interaktiv ausgeführt werden kann?
Obwohl Sie bereits eine Antwort auf Ihre Frage erhalten haben, finden andere dies möglicherweise hilfreich.
Vim-Befehle können auch in einer Datei angegeben werden, die mit der folgenden
-s
Option ausgeführt wird:Beispiel:
Dadurch wird Vim verwendet, um den Inhalt der Datei einzurücken, zu speichern und zu beenden.
quelle
Vim-Befehle können in der Befehlszeile angegeben werden, wenn Sie das Programm wie folgt ausführen:
Sie können weiterhin Befehle hinzufügen, indem Sie
"+[cmd]"
Argumente hinzufügen . Sie können entweder dort enden und der Editor wird geöffnet, diese Befehle ausführen und warten oder Sie, oder Sie können ein hinzufügen"+:wq"
, um die Datei zu speichern und zu schließen.Sie können ein Skript auch mit der Vimscript-Syntax schreiben und es entweder in eine Funktion einbinden, die beim Öffnen der Datei aufgerufen wird, oder in ein separates Skript, um es mithilfe der obigen Syntax zu importieren und auf den Puffer anzuwenden.
quelle
Um vim im nicht interaktiven Modus auszuführen, können Sie entweder
+{command}
/-c {command}
oder einen-s
Parameter verwenden, mit dem Sie die vim-Befehle ausführen können, nachdem die erste Datei gelesen wurde.Überprüfen Sie einige Beispiele unten.
Eine einfache Standardeingabe und -ausgabe über Pipes kann mit dem folgenden Befehl erreicht werden:
So bearbeiten Sie eine Datei und speichern die Änderungen in einer anderen:
Um die Datei direkt zu bearbeiten, können Sie Folgendes verwenden,
-s {scriptin}
damit die Skriptdatei gelesen wird. Beispiel:Um die Datei zu analysieren und an die Ausgabe der Pipeline zu senden, können Sie Folgendes versuchen:
oder:
Weitere Informationen: Wie bearbeite ich Dateien nicht interaktiv (z. B. in der Pipeline)? bei Vim SE
quelle
:hi
ist scrollbar und zeigt-- More -- SPACE/d/j: screen/page/line down, b/u/k: up, q: quit
? Es wird nicht in der Pufferliste angezeigt, und beim Schreiben mit wird:w
eine leere Datei geschrieben (und durch Drücken der Eingabetaste wird der Pager gescrollt oder beendet.) Ich kann verwenden:redir! >file | :hi | :redir END
, wodurch so viel erfasst wird, wie ich scrolle. Ich denke, es kann mechanisch wie eine 2-Richtung funktionierenmore
. Ich muss mich fragen, warum:help
und:hi
sind nicht beide ausgelagert oder beide RO-gepuffert ...