vimを終了するときの:wq <cr>:x <cr>とZZの違いは何ですか?


38

ご存じのとおり、ViとVimには多くの同義語があります。ファイルを保存してVimとViを終了する方法は3つあります。これらは:WQ <CR> :X <CR>ZZ。これらは何らかの点で異なると聞きました。

使用する間に実際的な違いはありますか?

:x<cr>

:wq<cr>

または

ZZ

ファイルを保存してVimとViを終了するには?


簡単な答え:それらは同じです。
JJoao

2
それらは同じではありません。正確な違いはわかりませんが、変更が加えられていない場合(タイムスタンプの更新など)にファイルに書き込むのではなく、書き込むことについてです。
ワイルドカード

1
また、より実用的な、ビューのポイントZZ(またはZQ...)タイプに短く、簡単です
VanLaser

:help :wq:help ZZ:help :x。ドキュメントにあります。
アントニー

回答:


40

Vimのドキュメントによる:xZZ、同等です。変更された場合にのみファイルを保存し、Vimを終了します。

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 一方、ファイルを書き込み、Vimを終了します(適切な権限がある場合)。


9

akshayが指摘したように、Vimのドキュメントは、それが同等であり、関連するバッファーが変更された場合にのみファイルを保存すること:xを説明しZZています。一方:wq、バッファが変更されていない場合でも、対応するファイルにバッファを保存します。

どちらの場合も、バッファーの内容はディスクに保存されます。明らかに結果は同じですが、なぜ気にしますか?しかし、ちょっと待ってください...微妙ですが、無関係な違いはありません。

経由:xでVimを終了し、バッファーが変更されていない場合、そのファイルの変更時間は変更されません。一方、を介して終了する:wqと、ファイルが技術的に書き換えられる(再び保存される)ため、変更時間が変更されます。

これは、特定の状況で何らかの影響を与える可能性があります。たとえば、変更時間に依存するバックアッププロセスでは、追加情報が含まれていない場合でも、このファイルを保存(およびネットワーク経由で送信)することができます。または、ファイルが変更されたことを(何らかの理由で)検出した場合、監視プロセスがアラームを鳴らす可能性があります...

編集:言及するのを忘れましたが、修正時間を変更せずに修正されたバッファ/ファイルを残すために、:q(なしでw)も機能します。


2
また、一部のオートコマンドは、ファイルが書き込まれたときにのみ実行されます。ファイルが変更されておらず、VimがZZまたは:xで終了した場合、それらは実行されません。
スパイディ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.