Gostaria de escrever o buffer modificado que atualmente estou editando em um arquivo temporário periodicamente. Em segundo plano, eu poderia, por exemplo, usar ferramentas externas para analisar o arquivo.
Não quero gravar o arquivo no local real nesse processo - quero que o usuário seja o responsável por meio do :w
comando normal .
Como posso fazer isso em um vimscript chamado pelo CursorHold
autocommand? O Vim 7.4 e superior estão bem.
:[range]w !command
.Respostas:
Isto é bastante simples:
No entanto, isso tem o efeito colateral de nomear um
:new
buffer no primeiro disparo. (Isso não afeta os arquivos existentes; esta é a diferença entre:write
e:saveas
.) Você pode adicionar outra verificação (empty(bufname(''))
) e desfazê-la via:0file
, ou passar para as funções de nível inferior:A ressalva dessa abordagem é que o conteúdo do arquivo sempre será mantido
'encoding'
configuração do Vim , ou seja, você perde qualquer costume'fileencoding'
do buffer original emap()
lista sobre retornada porgetline()
).fonte