Я поместил эту команду в ~/.vimrc.

au! FileChangedShell img.dat | r img.dat

который также содержит

set autochdir           " pwd is always directory of current buffer  

Я надеялся, что если файл img.dat существует в pwd и он изменен каким-либо приложением, отличным от vim, то vim прочитает новый img.dat в текущий буфер. Нет, ничего не происходит.

v:fcs_reason is unset  
:if exists("#FileChangedShell") | echo 'yes' | else | echo 'no' | endif

возвращает «да»

Что мне не хватает?

1 ответ1

0

Возможно, вам нужна команда :edit вместо команды :read . Но команда :edit потерпит неудачу, если у вас будут несохраненные изменения в Vim, поэтому вы должны принудительно сделать это с помощью ! , Кроме того, я не знаю, почему у вас есть | перед командой, так как она там не принадлежит.

Попробуй это:

au! FileChangedShell img.dat e!

Изменить: Обратите внимание, что FileChangedShell не запускает сразу каждый раз, когда файл на диске, связанный с буфером Vim изменяется. Существуют определенные времена, когда Vim проверяет измененный файл. От :help FileChangedShell:

В основном запускается после выполнения команды оболочки, но также с помощью команды :checktime или когда Gvim восстанавливает фокус ввода.

Я полагаю, что это также происходит, когда вы просите Vim написать файл.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .