Выполните команду CommandTFlush, когда новый файл будет записан

Я пытаюсь заставить Vim выполнить команду 'CommandTFlush' каждый раз, когда новый файл является записью. Для тех, которые не используют плагин Команды-T, команда 'CommandTFlush' используется для восстановления индекса файлов в текущем каталоге.

То, что я хочу сделать, выполняется команда после того, как файл записан в диск, так, чтобы CommandTFlush нашел файл и добавил его к, он - индекс.

Я попытался писать функцию сам, но или она не стреляет, или она стреляет слишком скоро (прежде чем файл будет записан, и самое главное должно добавить файл к индексу):

au! BufWritePre * ks| call NewFilesUpdatesCommandT()
function! NewFilesUpdatesCommandT()
    let filename=@%
    if !filereadable(filename)
        CommandTFlush
    endif
endfunction

Я подозреваю, что это могло быть решено путем установки некоторого булева var (isTheFileNew) в BufWritePre и затем выполнить команду CommandTFlush в BufWritePost, если бы файл был просто создан, но я не могу выяснить синтаксис. Другое решение могло устанавливать/сбрасывать обратный вызов BufWritePost из обратного вызова BufWritePre, если это возможно...

Кто-либо мог помочь мне здесь?;)

6
задан peterfarsinsen 15 August 2010 в 08:44
поделиться

1 ответ

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

Это реализация вашего второго предложения.

2
ответ дан 8 December 2019 в 12:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: