
時には:q
動作しますが、時には:q!
。!
in の一般的な用途は何でありvim
、いつ使用するか知りたいです。グーグルしてみましたが感嘆符が抜けたようです。
答え1
ファイルの実際の内容を変更しない場合は、単に終了を使用してください:q
。しかし、編集する場合、vimは単純な終了を許可しません。その変更をキャンセルしたくない場合があります(特に:q
長時間編集して誤ってvimを使用した場合)。この場合、:q!
強制終了動作(オーバーライド警告)になります。たとえば、開いているすべてのウィンドウをCtrlwn強制終了することができます。:qa!
(または:wq
を:x
使用して変更を記録して-R
終了できます。view
:wq!
ちなみに を使用してZQ
同じ操作を実行することも:q!
、ZZ
同じ操作を実行することも:wq
できるため、入力が簡単になります。 :)
VimにはExitを介してアクセスできるヘルプが組み込まれており、:help
クイックトピックページもあります:help Q_wq
。
答え2
「一般的な用途」はなく、!
修飾子にすぎません。各コマンドは、!
実行する追加のアクションを選択できます。
存在するたくさんCaseコマンドは!
それを強制するようにプログラムされています。例にはq
前述の内容が含まれていますがsave
、save!
ファイルが既に存在する場合は上書きされ、実行中の操作が確実な場合はsave
提案とともにエラーが返されます。save!
最後に、または!
同じシェルコマンドで単独で使用されます。:!ls
:!mkdir foo
read
(あなたの意見では)このコマンドはread! <something>
Vimによって次のように解釈されます。「出力を実行して<something>
読み込みます(Vimではバッファに書き込みます)。」。したがって、ここでは!
命令の修飾語ではなくread
独立した命令と見なされます!
。read
コマンドがバリアントを宣言していないため、!
Vimは残りの部分を独立して解釈したり(したがって!
後に「単独で使用」と読み取ったりread
)、特定の動作でバリアントをread
宣言することもできます(!
「残りはシェルとして実行」)これは!
「単独使用」の効果を正確に模倣します。
私が言いたいのは、ルールがなく、各コマンドが!
実行するアクションを定義し、修飾子の効果の一貫性を維持しようとしている間に非常に厳しいルールがないことです(例:「!
やるいつも強要用だ」)より少ないキーストロークでより便利な動作が可能であることも利点です。
答え3
:wq!
たとえば、ユースケースに対する他の答えは非常に完璧です。
しかし、一般的な使用に関する質問はよりオープンです。!
初心者の場合:名前!
が「バン」の人。たとえば、Googleで「vim bang linux」を検索すると、この質問が表示されます。 (興味深いことに「shebang」があります#!
。)
bang は Vim 内で bash コマンドを実行するためにも使用されます。例:
:!ls
bashシェルを作成し、ls
出力を実行して表示し、「続行するにはEnterキーを押します」。 Enter キーを押すと、ユーザーは Vim の対応する位置に戻ります。
この歴史的テーマでは:素晴らしいVimショートカット
「:
コマンドモードに戻ります。次のコピーをコマンドライン!
で渡す必要があることを示します。」
!
ここで強制終了以上の機能を実行することがわかります:q!
!