Vi i Vim, jak wszyscy wiecie, mają wiele synonimów. Znam trzy sposoby zapisania pliku i wyjścia z Vima i Vi. Są to : wq <cr> , : x <cr> i ZZ . Słyszałem, że są one w pewien sposób różne.
Czy są jakieś praktyczne różnice między używaniem:
:x<cr>
:wq<cr>
lub
ZZ
zapisać plik i wyjść z Vima i Vi?
save
filesystem
quit
original-vi
wefwefa3
źródło
źródło
ZZ
(lubZQ
) jest krótszy i łatwiejszy do:help :wq
,:help ZZ
,:help :x
. Jest tam w dokumentach.Odpowiedzi:
Z dokumentacji Vima
:x
iZZ
są równoważne; zapisują plik tylko wtedy, gdy został zmodyfikowany, a następnie zamykają Vima::wq
z drugiej strony zapisuje plik i zamyka Vima (zakładając odpowiednie uprawnienia).źródło
Jak Akshay wskazał, dokumentacja Vim wyjaśnia, że
:x
iZZ
są równoważne i tylko zapisać plik jeśli Associated bufor został zmieniony. Natomiast:wq
zapisuje bufor do odpowiedniego pliku, nawet jeśli pozostaje niezmieniony.W obu przypadkach zawartość bufora zostanie zapisana na dysku. Oczywiście wynik jest taki sam, więc po co zawracać sobie głowę, prawda? Ale czekaj ... Jest subtelna, ale nie bez znaczenia różnica.
Jeśli wyjdziesz z Vima przez
:x
i nie nastąpi zmiana w buforze, nie będzie zmiany czasu modyfikacji tego pliku. Z drugiej strony, jeśli wyjdziesz przez:wq
, czas modyfikacji ulegnie zmianie, ponieważ plik jest technicznie przepisywany (ponownie zapisywany).Może to mieć pewien wpływ w niektórych sytuacjach. Na przykład proces tworzenia kopii zapasowej zależny od czasu modyfikacji może przechowywać ten plik (i potencjalnie wysyłać go przez sieć), nawet jeśli nie uwzględniono żadnych dodatkowych informacji. Lub jakiś proces monitorowania może wywołać alarm, jeśli wykryje, że (dla niego) plik został zmieniony ...
Edycja: Zapomniałem wspomnieć, aby pozostawić zmodyfikowany bufor / plik bez zmiany czasu modyfikacji, zadziała również
:q
(bezw
).źródło