Como akshay apontou, a documentação do Vim explica isso :x
e ZZ
é 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 o w
) também funcionará.