Ich möchte system("cp /home/currently_opened_file.txt /somewhere/else")
ausführen, wenn ich vim mit :wq
beenden. Gibt es ein autocmd-Ereignis dafür? Oder eine andere Möglichkeit, es zu tun?autocmd-Ereignis, um einen Befehl auf auszuführen: wq - vimscript?
Antwort
aktualisieren:
Die OP festgestellt in den Kommentaren, dass diese Kombination genau tat, was gewünscht wurde (den Befehl nur auf :wq
).
:autocmd BufWritePost * :autocmd VimLeave * :!cp % /somewhere/else
Ursprüngliche Antwort:
können Sie haken Sie das BufWritePost
Ereignis. Dies wird den Befehl auf alle schreiben, nicht nur, wenn Sie :wq
verwenden, um die Datei zu verlassen.
:autocmd BufWritePost * :!cp % /somewhere/else
Ich nehme an, Sie könnten versuchen, das BufDelete
Ereignis Einhaken (vor einem Puffer aus dem Pufferliste zu löschen), aber das scheint, wie es problematisch wäre, als Puffer für mehr als Datei-Editoren verwendet werden. Sie werden auch für Dinge wie QuickLists, die Hilfe-Viewer, etc. verwendet.
Es gibt einige Ereignisse, die stattfinden, wenn Sie aufhören, was eine Option sein könnte.
QuitPre when using :quit, before deciding whether to quit
VimLeavePre before exiting Vim, before writing the viminfo file
VimLeave before exiting Vim, after writing the viminfo file
können Sie die vollständige Liste siehe :help autocmd-events
verwenden.
Beachten Sie auch, dass Sie einschränken können, was dem Ereignis entspricht. Zum Beispiel, wenn Sie nur diese für HTML-Dateien und CSS-Dateien passieren soll, könnten Sie verwenden:
:autocmd QuitPre *.html,*.css :!cp % /somewhere/else
Ich vermute, Sie experimentieren müssen und sehen, was für Sie arbeitet.
Es sieht so aus, als müssten Sie das Schreiben einer Datei automatisch an einen anderen Ort kaskadieren. My DuplicateWrite plugin bietet komfortable Befehle zum Einrichten solcher. (Die Plugin-Seite enthält Links zu alternativen Plugins.)
:DuplicateWrite /somewhere/else
Danke, das wird sich als nützlich erweisen. –
- 1. Wie erstelle ich einen benutzerdefinierten Kalebassenschritt, um einen Befehl auszuführen?
- 2. Neuzuordnung: Wq zu: wq in vim
- 3. Batch-Datei, um alle 1 Minute einen Befehl auszuführen
- 4. os.system() verwenden, um einen Befehl ohne Root auszuführen
- 5. Logstash-Konfiguration, um einen Befehl zur elastischen Suche auszuführen
- 6. Welchen Befehl verwendet pytest, um Testdateien auszuführen?
- 7. Wie man einen Shell-Befehl über vimscript ausführt?
- 8. einen Befehl auszuführen, wenn Erweiterung Sternchen läuten
- 9. Python nicht einen Windows-Befehl auszuführen, mit
- 10. Versuch, VBA zu verwenden, um einen JavaScript-Befehl auf einem Webbrowser-Steuerelement auszuführen
- 11. Gibt es in Ansible einen adhoc-Befehl, um Remote-Befehle auf entfernten Knoten auszuführen?
- 12. Unix-Befehl, um Listenvergleiche auszuführen, die einer Set-Operation entsprechen
- 13. Verwenden Sie Powershell, um den Psexec-Befehl auszuführen
- 14. Alternative zu Aufwärtspfeil + Enter, um den vorherigen Befehl auszuführen?
- 15. Verwenden Sie "nohup", um "Top" -Befehl im Hintergrund auszuführen
- 16. Wie man einen eingebauten Befehl in vim
- 17. Ist es möglich, einen Befehl in einer Liste auszuführen?
- 18. VimScript: pass Wert der lokalen Variablen Befehl bearbeiten
- 19. Wie schreibe ich expect snippet im Bash-Skript, um einen Remote-Befehl auszuführen?
- 20. Java: "UNIXProcess" -Fehler bei Verwendung von "exec" oder "ProcessBuilder", um einen Befehl auszuführen
- 21. Unterschied zwischen wq und x in vi
- 22. vimscript schließendes Zeichen überspringend
- 23. Erstellen Sie einen neuen Vim-Befehl, um mehrere integrierte Befehle auszuführen?
- 24. Erlauben Sie einem unprivilegierten Benutzer, einen bestimmten Befehl auszuführen
- 25. Wie einen Befehl auszuführen, nachdem ein Behälter mit yml Datei
- 26. Steuerzeichen in vimscript Funktionsausgang anzeigt
- 27. Wie schreibe ich ein Skript mit mehreren Pings als Bedingung, um einen Befehl auszuführen?
- 28. Was ist der richtige Weg, um einen komplexen Shell-Befehl in C++ auszuführen?
- 29. Ändern Sie vorübergehend das aktuelle Arbeitsverzeichnis in bash, um einen Befehl auszuführen
- 30. Wie öffnet man ein gnome-Terminal, um einen Befehl mit gnome-terminal, ständig auszuführen?
Hey, Dan. Es wird auch mit ': w' funktionieren und ich will das nicht, weil es bei jedem Speichern der Datei ausgeführt wird. Ich möchte, dass ein Event nur mit ': wq' funktioniert. Kannst du etwas vorschlagen? –
Hey, vielen Dank. Ich hakte 'BufWritePost' mit' VimLeave'. ': autocmd BufWritePost *: autocmd VimLeave *:! cp%/somewhere/else' –
Cool, ich werde das in die Antwort setzen, da es genau das tat, was du warst –