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? ;)

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top