Vim ~ / .vimrc au! FileChangedShell

0

Eu coloquei este comando em ~ / .vimrc.

au! FileChangedShell img.dat | r img.dat

que também contém

set autochdir           " pwd is always directory of current buffer  

Eu esperava garantir que, se o arquivo img.dat existisse em pwd e fosse modificado por algum aplicativo diferente de vim, então o vim iria ler o novo img.dat no buffer atual. Isso não acontece, nada acontece.

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

retorna "sim"

O que estou perdendo?

    
por user985675 03.09.2015 / 17:13

1 resposta

0

Você provavelmente deseja o comando :edit em vez do comando :read . Mas o comando :edit falharia se você tivesse alterações não salvas no Vim, então você teria que forçá-lo com ! . Além disso, não sei por que você tem um | anterior ao comando, já que ele não pertence lá.

Tente isto:

au! FileChangedShell img.dat e!

Editar: Observe que o FileChangedShell não é acionado imediatamente toda vez que um arquivo no disco associado a um buffer do Vim é alterado. Há tempos específicos em que o Vim verifica um arquivo alterado. De :help FileChangedShell :

Mostly triggered after executing a shell command, but also with a :checktime command or when Gvim regains input focus.

Eu acredito que isso também acontece quando você pede ao Vim para escrever o arquivo.

    
por 04.09.2015 / 01:15