Vim - Aktion auslösen \ Skript beim Speichern \ Schreiben?


13

Dies mag für Superuser besser sein, aber ich denke, als ein Werkzeug des Handels könnte es hier ein besseres Thema sein. Bei der Bearbeitung in vim stelle ich häufig fest, dass ich das Programm beende, ein Skript ausführe, das ich teste, und dann zurück in vim gehe (ja, mir ist klar, dass ich den Befehl:! Verwenden kann, um Dinge in vim auszuführen) Möglichkeit, etwas zu starten, wenn die Datei gespeichert wird (: w)?

Antworten:



19

Siehe :he :autocmdund:he BufWritePost

Die Zeile würde so aussehen:

:autocmd BufWritePost /path/to/file/or/pattern !command <afile>

Wenn das <afile>Ding nicht funktioniert, benutze %:p.


1

Ich habe den Teil "Zurück zu Vim", bin mir aber nicht sicher, wie ich den Befehl ": w" selbst ausführen soll (was sehr praktisch wäre, da dies für mich sehr reflexartig ist).

w | silent execute "! myscript" | redraw!

Ich denke, es könnte auch für Superuser besser sein.


1

Dies ist eine offensichtliche Eigenwerbung, aber ich habe ein Vim-Plugin geschrieben, das bestimmte Shell-Skripte auslöst, die nach bestimmten Vim- autocmdEreignissen ausgeführt werden. Beispielsweise .bufwritepost.vimhook.shwürde ein Skript mit dem Namen jedes Mal (synchron) ausgeführt, wenn der BufWritePostBefehl ausgelöst wird. Sie könnten dann leicht jede beliebige Logik, die Sie wollen, in dieses Skript einbinden. Das Plugin setzt bestimmte Namenskonventionen dieser Skripte voraus und unterstützt auch "Hook" -Skripte, die nur für Dateien ausgelöst werden, die bestimmten Namen entsprechen oder bestimmte Erweiterungen haben. Und natürlich können Sie jede autocmdVeranstaltung frei wählen , obwohl ich festgestellt habe, dass BufWritePostdie meisten meiner Anwendungsfälle passen.

Vollständige Details: https://github.com/ahw/vim-hooks

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.