Vimエディターを終了するにはどうすればよいですか?


3765

行き詰まって逃げられない。それは言う:

"type :quit<Enter> to quit VIM"

しかし、それをタイプすると、オブジェクトの本体に表示されます。


131
VIMを終了しようとしていますか?この場合は、「Escape」を押してから「:q」と入力します
Pop

47
コロンをお忘れなく!入力して:quitから[ENTER]キーを押してください。
Farahmand 2014年

88
vimの基本を学ぶのは本当に簡単で、システムに組み込まれています。端末タイプで「vimtutor」。25分後、通常のテキストエディターよりも高速になります。
Mark Robson

4
他のコマンドをここで確認してください。
Toni

78
防ぐために、git commit将来的にVIMにあなたを送る: git config --global core.editor="nano"
トム・ケリー

回答:


4903

ヒットEsc「ノーマルモード」を入力するキーを押します。次に、:「コマンドラインモード」と入力して入力できます。コロン(:)が画面の下部に表示され、次のいずれかのコマンドを入力できます。コマンドを実行するには、Enterキーを押します。

  • :q 終了する(の略:quit
  • :q!保存せずに終了する(の略:quit!
  • :wq 書いて終了する
  • :wq! ファイルに読み取り権限しかない場合でも書き込みと終了を行う(ファイルに書き込み権限がない場合:強制書き込み)
  • :x 書き込みと終了(に似て:wqいますが、変更がある場合のみ書き込みます)
  • :exit書き込みと終了(と同じ:x
  • :qaすべてを終了する(の略:quitall
  • :cq 保存せずに終了し、Vimにゼロ以外のエラーを返す(つまり、エラーで終了する)

入力ZZして保存して終了する(と同じ:x)かZQ、単に終了する(と同じ:q!)ことで、「通常モード」から直接Vimを終了することもできます。(ここでは大文字と小文字が区別されることに注意してください。同じ意味ではZZありzzません。)

Vimには、:helpコマンドでアクセスできる広範なヘルプがあり、すべての質問に対する回答と初心者向けのチュートリアルを見つけることができます。


15
escを再マップしたり、.vimrcに奇妙なマッピングをしたりしない限り、間違いなくそうなります。Linuxの場合はxevと入力し、escapeを押したときに得られるキータイプがescapeであることを確認してください。
dirvine 2014年

17
Escを使用できない場合は、ctrl + cを使用できることを覚えておいてください(私のシェルはTotalTerminalにあるため、私のように)。vim.wikia.com/wiki/Avoid_the_escape_key
dotnetCarpenter

25
:x== ZZしかし:x!= :wq:xファイルが変更された場合にファイルを:wq書き込み、常にファイルを書き込みます(つまり、を使用する場合inotify)。
Hauleth、2015

36
正直なところ、私はvim自体を使用するよりもvimのヘルプシステムを使用するのに苦労しており、主にクイックリファレンスカードとオンラインドキュメントに依存しています。
bgvaughan 2015

18
ファイルに対する権限はないがsudo権限はある場合:w ! sudo tee %
tvlooy

190

写真は、1000のUnixコマンドとオプションに相当します。

ここに画像の説明を入力してください

私はこれを毎学期の生徒に教えます。彼らはその後viを理解しているようです。

viは、3つの状態のみを持つ有限状態機械です。

起動すると、viはCOMMANDモードになり、短い、少数の文字コマンドを盲目的に入力できます。あなたは自分が何をしているか知っています。これはアマチュア向けではありません。

実際にテキストを編集したい場合は、1文字のコマンドを使用してINSERTモードに移動する必要があります。

  • i:カーソルの位置でINSERTに移動します
  • I:行の先頭でINSERTモードに入る
  • a:カーソルのに追加
  • A:行末に追加
  • o:現在の行の下に新しい行を開く
  • O:現在の行の代わりに新しい行を開く

さて、質問に答えます:終了します。

EXモードからviを終了できます。

  • q:変更を加えていない、または事前に保存していない場合
  • q !:変更を無視して終了します
  • wq:保存して終了
  • x:これはwqに等しい

wxファイル名パラメーターを受け入れます。viをファイル名で開始した場合は、ここで再度指定する必要はありません。

最後に、最も重要なのは、どのようにしてEXモードに到達できるかです。

EXモードは、画面の一番下の行に入力を確認できる長いコマンド用です。コマンドモードから、コロンを押す:と、コロンが一番下の行に表示され、上記のコマンドを入力できます。

挿入モードから、ESC、つまりエスケープボタンを押してコマンドモードに切り替え、次に:モードに移動する必要があります。

不明な場合は、ESCキーを押してください。コマンドモードになります。

したがって、堅牢な方法はESC-:-x-Enterで、ファイルを保存して終了します。


5
ありがとう、画像はとても役に立ちます。ただし、私にとってwは、ExからCommandモードに変更されませんが、変更されますEsc。何が悪いのですか?
Nick Volynkin

2
w-Enterを書き込むと、ファイルが保存され、COMMANDモードに戻ります。save&quitコマンドの全体像を把握するために書きました。
Gergely

3
ああ、そうですか:w。それからそれは完全に理にかなっています。ところで、ディスクからリロードする(つまり、変更を元に戻すがファイルを閉じない)コマンドはありますか?もしそうなら、それwは図の隣にあるかもしれません。
Nick Volynkin

2
@Gergely私は混乱を理解しました!ドキュメントから、通常モードはコマンドモードとも呼ばれます!つまり、コマンドモード!=コマンドラインモードです。うわー!
jpaugh

2
ディスクからリロードするコマンドがある@NickVolynkin :e(または可能性が高い:e!ことはせずに保存されていない変更についての警告が表示されますので、!
JDS

177

コマンドを入力する前にEscキーを押してください。入力後、を押しReturnて確認します。

Esc現在のコマンドを終了し、Vimを通常モードに切り替えます。今、あなたは押すと::で表示される下の画面の。これは、実際にコマンドを入力していて、ファイルを編集していないことを確認します。

ほとんどのコマンドには省略形があり、オプションの部分は大括弧で囲まれていますc[ommand]

'*'でマークされたコマンドはVimのみです(Viには実装されていません)。

安全な終了(保存されていない変更があると失敗します):

  • :q[uit] 現在のウィンドウを終了します。これが最後のウィンドウの場合は、Vimを終了します。現在のバッファに変更が加えられている場合、これは失敗します。
  • :qa[ll]*変更されたバッファがない限り、すべてのウィンドウとVimを終了します。

プロンプト-終了(保存されていない変更がある場合はプロンプトを出します)

  • :conf[irm] q[uit]*終了しますが、変更されたバッファーがある場合はプロンプトを出します。
  • :conf[irm] xa[ll]*変更されたすべてのバッファを書き込み、Vimを終了します。一部のバッファーに書き込めない場合にプロンプ​​トを表示します。

変更を書き込み(保存)して終了します。

  • :wq現在のファイルを(変更されていなくても)書き込み、終了します。ファイルが読み取り専用であるか、バッファに名前がない場合、書き込みは失敗します。:wqa[ll]*すべてのウィンドウ。
  • :wq!同じですが、読み取り専用ファイルも書き込みます。:wqa[ll]!*すべてのウィンドウ。
  • :x[it]ZZ詳細)。すべてのウィンドウで、ファイルが変更されて終了した場合にのみ、:xa[ll]* ファイルに書き込みます。

変更を破棄して終了:

  • :q[uit]! ZQ*可視バッファーに変更があった場合も、書き込みなしで終了します。非表示のバッファが変更されても終了しません。
  • :qa[ll]!*、:quita[ll][!]* Vimを終了すると、バッファー(非表示を含む)へのすべての変更が失われます。

を押しReturnてコマンドを確認します。

この回答は、すべてのVim書き込みおよび終了コマンドと引数を参照しているわけではありません。実際、それらはVimのドキュメントで参照されています

Vimには豊富なヘルプが組み込まれており、入力Esc:helpReturnして開くことができます。

この回答は、@ dirvineによって最初に作成され、他のSOユーザーによって編集された他の回答に触発されました。Vimのリファレンス、SOのコメント、その他の情報源からより多くの情報を含めました。ViとVimの違いも反映されています。


81

あなたがVimの中に保存せずに終了したい場合 Vimはゼロ以外の終了コードを返してきた、あなたは使用することができます:cq

のために小指シフトに煩わされることができないので、私はこれをいつも使用し!ます。私はしばしばファイルに保存する必要のないものをVimにパイプします。チェックインを中止するためにゼロ以外の値で終了する必要のある奇妙なSVNラッパーも動作しています。


19
また、これを使用してgit commit、visudo、またはcrontabを中止します…
Josh Lee

gitは:q!空ではないメッセージをチェックし、ゼロ以外の終了コードをチェックしないため、git commitを中止しても問題はありません。
ムーペット

私はそれが機能することを知っています、それは:cqがシフトキーを必要としないということだけです。:-)
スー・スペンス

47

これは、Vimを終了するという最悪の場合のシナリオであり、単にVimを終了するだけで、何をしたかがわからず、開いたファイルがどうなるかを気にしません。

Ctrl-cEnterEnterviEnterCtrl-\Ctrl-n:qa!Enter

ほとんどの場合、これで解決します。

このようなものが必要ないくつかの興味深いケース:

  • iCtrl-ovg (挿入モード、次にビジュアルモード、次にオペレーター保留モードに入ります)

  • QappendEnter

  • iCtrl-ogQCtrl-r=Ctrl-k (このケースのポージに感謝)

  • :set insertmode(これはCtrl-\Ctrl-n通常モードに戻る場合です)


編集:上記のケースのため、この回答は修正されました。それは従来:

EscEscEsc:qa!Enter

ただし、Exモードに入った場合は機能しません。その場合、次のことを行う必要があります。

viEnter:qa!Enter

したがって、「自分が何をしたのか知りたくなく、何も保存したくないので、今すぐ出したい」という完全なコマンドです。だろう

viEnterEscEscEsc:qa!入る


6
@cavalcadeこれは、エディターが通常モードであることを確認してから安全に終了するための非常に一般的な方法です。通常の使用では、あなたが必要とするすべてはある:q:wq
ダンPassaro

6
一般的ではない!私(初心者)が入力した場合はどうなりi<Ctrl-O>gQ<Ctrl-R>=<Ctrl-K>ますか?
ポルゲス2017年

@porgesテストケースをありがとう!元の方法が悲惨だったことを証明する他のいくつかのテストケースもあります。私は答えをより一般的になるように編集しました。
Heikki Naski

@HeikkiNaski少なくとも私にとっては(式レジスタをエスケープするために)Ctrl-Cの後にEnterも必要です
Porges

40

イージーモードで-yオプションの使用中に)Vimを終了する必要がある場合は、Ctrl+ Lを押して通常のVimモードに入ると、通常の終了オプションが機能します。


7
さらに別のオプション:を使用Ctrl+Oして、一時的にINSERTモードを終了してからに入ることができます:q。この組み合わせのトリックは、通常のvimでも単一のコマンドを実行してINSERTモードに戻るのに役立ちます。
Andrey Starodubtsev 2015

28

Vimには、入力モード、コマンドモード、Exモードの3つの操作モードがあります。

入力モード - 入力したすべての内容、すべてのキーストロークが画面に表示されます。

コマンドモードまたはエスケープモード -このモードで入力するすべてのものがコマンドとして解釈されます。

元モード -これは別のエディタです。ラインエディターです。行ごとに、または行の範囲に基づいて機能します。このモードで:は、画面の下部にが表示されます。これは元エディタです。

Vimを終了するには、exモードまたはコマンドモードのどちらかで終了します。入力モードではVimを終了できません。

exモードを終了する

  1. コマンドモードであることを確認する必要があります。そのためには、単にEscキーを押します。

  2. :キーを押してexモードに移動します

  3. 終了するには、exモードで次のいずれかの組み合わせを使用します。

    :q-終了 :q!-保存せずに終了 :wq-終了&保存したり、書き込み&終了 :wq!-ケースファイルのパーミッションでWQが、力の書き込みと同じ読み取り専用されている :x-書き込み&終了 :qa-すべて終了します。次のように複数のファイルを開く場合に便利です。vim abc.txt xyz.txt

コマンドモードを終了する

  1. エスケープキーを押します。コマンドモードの場合は、すでにこれを行っているはずです。

  2. 大文字のZZを押す(shift zz)-保存して終了

  3. 大文字のZQ(shift zq)を押します-保存せずに終了します。


3
「exモード」と呼んでいるものは、実際にはコマンドラインモードと呼ばれています。exコマンドを入力できますが、いくつか重要な違いがあります。
jpaugh

1
うーん。あなたはビジュアルモードを忘れています。
プリフタン共和国

26

を押した後ESC(または私のコンピュータではcmd+ C:、コマンドプロンプトを表示するにはを押す必要があります。次に、と入力しquitます。

情報が保存されていないため、マシンが終了を許可しない場合があります。とにかく終了する場合は!、終了した直後に入力します(つまり:quit!)。


19

WindowsにGitクライアントをインストールしてVimを入手しました。:qVimを終了しません。:exitしかしした...


1
同様に、vimがmacintoshでgitを実行する場合、これは機能しました。
Joel、

1
@Joelが私のMacでこれをチェックしたところ、両方のコマンドが合法vim -versionでした(7.3)。
Nick Volynkin

2
以下のためにGit BashWindows上でVim時々ESC働いていません。使用CTRL+ [代わりに。
Val

@Val不思議に見覚えがあります。Iircは、2つが同じことを行うためです。以下のようにすること^[と同じですESC。Windowsによって複雑になるのは興味深いことです。そして面白い。
Pryftan

10

質問はここで行われました

q番号付きのコマンドは、その位置で指定された分割を閉じます。

:q<split position>または:<split position>qその位置で分割を閉じます。

Vimウィンドウのレイアウトが次のようになっているとします。

-------------------------------------------------
|               |               |               |
-------------------------------------------------
|               |               |               |
|               |               |               |
|    Split 1    |    Split 2    |     Split 3   |
|               |               |               |
-------------------------------------------------

q1コマンドを実行すると、最初の分割が閉じられます。q22番目の分割を閉じ、逆も同様です。

quitコマンドでの分割位置の順序は重要ではありません。:2qまたは:q22番目の分割を閉じます。

コマンドに渡した分割位置が現在の分割数より大きい場合、最後の分割が閉じられます。

たとえばq100、上記のウィンドウ設定で3つの分割しかない場合に実行すると、最後の分割(分割3)が閉じます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.