Como Akshay señaló, la documentación de Vim explica, que :x
y ZZ
son equivalentes y sólo guardar un archivo si el buffer asociado se ha cambiado. Mientras que :wq
guarda el búfer en el archivo correspondiente, incluso si no ha cambiado.
En ambos casos, el contenido del búfer se guardará en el disco. Obviamente el resultado es el mismo, entonces, ¿por qué molestarse, verdad? Pero espera ... Hay una diferencia sutil, pero no irrelevante.
Si sale de Vim vía :x
y no ha habido cambios en el búfer, no habrá cambios en la hora de modificación de ese archivo. Por otro lado, si sale a través de :wq
, el tiempo de modificación cambiará, ya que el archivo se reescribe técnicamente (se guarda nuevamente).
Esto puede tener algún impacto en ciertas situaciones. Por ejemplo, un proceso de copia de seguridad que depende del tiempo de modificación, podría almacenar este archivo (y potencialmente enviarlo a través de la red) incluso si no se ha incluido información adicional. O algún proceso de monitoreo podría hacer sonar una alarma si detecta que (para ello) el archivo ha cambiado ...
Editar: Olvidé mencionar que para dejar un búfer / archivo modificado sin cambiar el tiempo de modificación, a :q
(sin el w
) también funcionará.