Führen Sie den Befehl CommandTFlush, wenn eine neue Datei geschrieben wird
Frage
Ich versuche, den Befehl ‚CommandTFlush‘ zu machen Vim laufen, wenn eine neue Datei writte ist. Für diejenigen, die nicht auf die Befehl-T-Plugin verwenden, wird der ‚CommandTFlush‘ Befehl verwendet, um einen Index der Dateien im aktuellen Verzeichnis neu zu erstellen.
Was ich tun möchte, ist der Befehl ausgeführt wird, nachdem die Datei auf die Festplatte geschrieben werden, so dass CommandTFlush die Datei finden, und fügen Sie es dem Index zu.
Ich habe versucht, eine Funktion selbst zu schreiben, aber es entweder nicht ausgelöst oder es löst zu früh (vor der Datei geschrieben wird, und der ganze Punkt ist, um die Datei zu dem Index hinzugefügt werden):
au! BufWritePre * ks| call NewFilesUpdatesCommandT()
function! NewFilesUpdatesCommandT()
let filename=@%
if !filereadable(filename)
CommandTFlush
endif
endfunction
Ich vermute, dass es durch das Setzen etwas boolean var (isTheFileNew) in BufWritePre gelöst werden könnte und dann den Befehl CommandTFlush in BufWritePost ausführen, wenn die Datei gerade erstellt wurde, aber ich kann nicht die Syntax herauszufinden. Eine andere Lösung könnte sein Einstellung / Lösens der BufWritePost Rückruf aus BufWritePre Rückruf, wenn das möglich ist ...
Kann jemand mir helfen, hier draußen? ;)
Lösung
augroup NFUCT
autocmd!
autocmd BufWritePre * call NFUCTset()
augroup END
function NFUCTset()
if !filereadable(expand('%'))
augroup NFUCT
autocmd BufWritePost * call NFUCT()
augroup END
endif
endfunction
function NFUCT()
augroup NFUCT
autocmd!
autocmd BufWritePre * call NFUCTset()
augroup END
CommandTFlush
endfunction
Dies ist eine Realisierung Ihres zweiten Vorschlags.
Andere Tipps
Hier ist meine Lösung. Es löst CommandTFlush, wenn eine Datei geschrieben wird, und auch, wenn Vim Fenster den Fokus erhält. Dies ist nützlich, wenn Sie Dateien außerhalb von vim erstellen - zum Beispiel, indem sie zwischen Niederlassungen in Ihrem Versionskontrollsystem umgeschaltet wird. Die neuen Dateien werden in CommandT verfügbar sein, nachdem Sie sofort erneut eingeben Vim.
augroup CommandTExtension
autocmd!
autocmd FocusGained * CommandTFlush
autocmd BufWritePost * CommandTFlush
augroup END