Запустите команду commandtflush, когда новый файл написан

StackOverflow https://stackoverflow.com/questions/3486747

  •  28-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь сделать VIM запустить команду «CommandTflush», когда новый файл является Writte. Для тех, которые не используют плагин Command-T, команда «CommandTflush» используется для восстановления индекса файлов в текущем каталоге.

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

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

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

Я подозреваю, что его можно решить, установив некоторые логические вари (Isthefilenew) в bufwritepreprepre, а затем выполнить команду commandtflush в bufwritepost, если файл был только создан, но я не могу понять синтаксис. Другое решение может быть установлено / unsetting обратный вызов bufwritepost из callback bufwriteprepre, если это возможно ...

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

Это было полезно?

Решение

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

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

Другие советы

Вот мое решение. Это триггеры commandtflush всякий раз, когда файл написан, а также всякий раз, когда окно Vim получит фокус. Это полезно, когда вы создаете файлы вне VIM - например, переключение между ветвями в вашей системе управления версиями. Новые файлы будут доступны в Commandt сразу после повторного ввода VIM.

augroup CommandTExtension
  autocmd!
  autocmd FocusGained * CommandTFlush
  autocmd BufWritePost * CommandTFlush
augroup END
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top