Ich möchte den geänderten Puffer, den ich gerade bearbeite, regelmäßig in eine temporäre Datei schreiben. Im Hintergrund könnte ich dann zum Beispiel externe Tools verwenden, um die Datei zu analysieren.
Ich möchte die Datei in diesem Prozess nicht an den tatsächlichen Speicherort schreiben - ich möchte, dass der Benutzer über den normalen :w
Befehl dafür verantwortlich ist.
Wie kann ich dies in einem vom Autocommand aufgerufenen Vimscript tun CursorHold
? Vim 7.4 und höher ist in Ordnung.
:[range]w !command
.Antworten:
Das ist ziemlich einfach:
Dies hat jedoch den Nebeneffekt, dass
:new
beim ersten Auslösen ein Puffer benannt wird. (Bestehende Dateien sind davon nicht betroffen. Dies ist der Unterschied zwischen:write
und:saveas
.) Sie können entweder eine weitere Prüfung (empty(bufname(''))
) hinzufügen und diese rückgängig machen über:0file
oder ganz zu Funktionen auf niedrigerer Ebene wechseln:Die Einschränkung dieses Ansatzes besteht darin, dass der Dateiinhalt immer beibehalten wird
'encoding'
Einstellung von Vim verlieren Sie also alle benutzerdefinierten Elemente'fileencoding'
des ursprünglichen Puffersmap()
über der Liste zurückgegebenen Liste wiederherstellen könnengetline()
).quelle