Não toque no arquivo durante a gravação se o arquivo não tiver sido alterado

15

Ocasionalmente, digito distraidamente :wquando estou lendo alguma coisa. Isso faz com que o tempo de modificação do arquivo seja alterado e, às vezes, faz com que meu sistema de compilação reconstrua desnecessariamente uma parte substancial de um projeto.

Existe uma maneira de configurar o vim para simplesmente não fazer nada se eu tentar escrever um arquivo e ele não foi alterado?

Praxeolitic
fonte

Respostas:

15

Estendendo a resposta do @ lcd047 que você pode usar cabbrevpara modificarw

:cabbrev w <c-r>=(getcmdtype()==':' && getcmdpos()==1 ? 'up' : 'w')<CR>

Quando você digita :w, notará que ele será substituído :upquando você pressionar retornar.

jecxjo
fonte
14

Não diretamente (ou seja, o comportamento de :wnão pode ser alterado), mas você pode aprender a usar em :upvez de :w. Faz exatamente o que você quer.

lcd047
fonte
3
Deixe-me acrescentar: eu uso um mapeamento de teclas favorito para salvar e vinculei-o a ele em :updatevez de :writeobter o requisito Pôster original.
Giovanni Maggiorani