Vi e Vim, como todos sabem, têm muitos sinônimos. Existem três maneiras que eu conheço de salvar o arquivo e sair do Vim e Vi. Estes são : wq <cr> , : x <cr> e ZZ . Ouvi dizer que estes são diferentes de alguma forma.
Existem diferenças práticas entre o uso de:
:x<cr>
:wq<cr>
ou
ZZ
salvar o arquivo e sair do Vim e Vi?
save
filesystem
quit
original-vi
wefwefa3
fonte
fonte
ZZ
(ouZQ
) é mais curto e mais fácil de escrever ...:help :wq
,:help ZZ
,:help :x
. Está aí nos documentos.Respostas:
Da documentação do Vim,
:x
eZZ
são equivalentes; eles salvam o arquivo apenas se ele tiver sido modificado e feche o Vim::wq
por outro lado, grava o arquivo e sai do Vim (assumindo permissões apropriadas).fonte
Como akshay apontou, a documentação do Vim explica isso
:x
eZZ
é equivalente e salva apenas um arquivo se o buffer associado tiver sido alterado. Considerando que:wq
salva o buffer no arquivo correspondente, mesmo que ele seja inalterado.Nos dois casos, o conteúdo do buffer será salvo no disco. Obviamente, o resultado é o mesmo, então por que se preocupar, certo? Mas espere ... Há uma diferença sutil, mas não irrelevante.
Se você sair do Vim via
:x
e não houver alterações no buffer, não haverá alterações no horário de modificação desse arquivo. Por outro lado, se você sair via:wq
, o tempo de modificação será alterado, pois o arquivo é tecnicamente reescrito (salvo novamente).Isso pode ter algum impacto em determinadas situações. Por exemplo, um processo de backup que depende da hora da modificação pode armazenar esse arquivo (e potencialmente enviá-lo pela rede), mesmo que nenhuma informação adicional tenha sido incluída. Ou algum processo de monitoramento pode tocar um alarme se detectar que (para ele) o arquivo foi alterado ...
Edit: esqueci de mencionar, para deixar um buffer / arquivo modificado sem alterar o tempo de modificação, um
:q
(sem ow
) também funcionará.fonte