Vim'den çıkarken: wq <cr>: x <cr> ve ZZ arasındaki farklar nelerdir?


38

Vi ve Vim, hepinizin bildiği gibi, çok eş anlamlı. Dosyayı kaydetmenin ve Vim ve Vi'den çıkmanın üç yolu var. Bunlar : wq <cr> , : x <cr> ve ZZ . Bunların bir şekilde farklı olduğunu duydum.

Kullanımı arasında herhangi bir pratik fark var mı:

:x<cr>

:wq<cr>

veya

ZZ

dosyayı kaydetmek ve Vim ve Vi'den çıkmak için?


Basit cevap: onlar aynı.
JJoao

2
Onlar aynı değil . Aradaki farkı tam olarak bilmiyorum, ancak değişiklik yapılmadıysa (yani zaman damgasını güncelleme) dosyaya yazma veya dosyaya yazmama hakkında bir şey var.
Joker

1
Ayrıca, pratik açıdan, ZZ(veya ZQ) yazmak daha kısa ve daha kolaydır ...
VanLaser 5:15

:help :wq, :help ZZ, :help :x. İşte dokümanda.
Antony,

Yanıtlar:


40

Vim'in dokümantasyonundan :xve ZZeşdeğerdir; onlar sadece değiştirilmişse dosyayı kaydederler, sonra Vim'den çıkın:

Write current file, if modified, and quit (same as ":x").  
(Note: If there are several windows for the
current file, the file is written if it was modified and the window is closed).

:wq diğer yandan dosyayı yazar ve Vim'den çıkar (uygun izinler varsayarak).


9

Akshay belirttiği gibi, Vim'ın dokümantasyon olduğunu açıklar :xve ZZdengi ve yalnızca ilişkili tampon değişmiştir eğer bir dosyayı kaydetmektedir vardır. Oysa :wqarabellek değişmemiş olsa bile ilgili dosyaya kaydeder.

Her iki durumda da, arabellek içeriği diske kaydedilir. Açıkçası sonuç aynı, öyleyse neden rahatsız ediyorsun? Ama bekleyin ... İnce, ama alakasız bir fark var.

Eğer Vim'den çıkış yaparsanız :xve arabellekte bir değişiklik olmazsa, o dosyanın değiştirilme zamanında bir değişiklik olmaz. Öte yandan, :wqişlemden vazgeçerseniz, dosya teknik olarak yeniden yazıldığı için (yeniden kaydedilmiş) değişiklik zamanı değişecektir.

Bunun bazı durumlarda bir etkisi olabilir. Örneğin, değişiklik zamanına bağlı olan bir yedekleme işlemi, ek bilgi eklenmemiş olsa bile bu dosyayı (ve muhtemelen ağ üzerinden gönderebilir) depolayabilir. Veya bazı izleme işlemleri, dosyanın (bunun için) değiştirildiğini algılarsa alarm verebilir ...

Düzenleme: Değişiklik zamanını değiştirmeden değiştirilmiş bir tampon / dosya bırakmak için, bir de :q(olmadan w) çalışacağını belirtmeyi unuttum .


2
Ayrıca, bazı otomatik komutlar yalnızca dosya yazıldığı zaman çalışacaktır. Dosya değişmediyse ve Vim ZZ veya: x ile sonlandırılıyorsa çalışmaz.
Spidey
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.