:wq・ZZで即終了!Vimで保存して終了する方法と逆引きコマンド早見表

コマンドリファレンス

vim で編集中のファイルを保存して終了する基本コマンドは :wq、またはノーマルモードで ZZ です。
「vim の画面から出られなくなった」「保存せず強制終了したい」「ZZ と :wq の違いを知りたい」という方向けに、やりたいこと別の逆引き早見表と詳しい使い分け・トラブル対処法をまとめました。

やりたいこと別コマンド逆引き早見表

文字入力中(インサートモード)の場合は、まず Esc キーを押してノーマルモードに戻ってから以下のキーを入力してください。

やりたいこと(目的)コマンド実行方法と特徴
保存して終了(基本・確実):wq:wq と入力して Enter(変更がなくても上書き実行)
保存して終了(最短・Enter不要)ZZ大文字で ZZ と入力(変更があれば保存終了、なければ保存せず終了)
変更時のみ保存して終了:x:x と入力して Enter(未変更なら更新日時を変えずに終了)
保存せず終了(未変更時):q:q と入力して Enter(変更がある場合は E37 エラー)
保存せず強制終了(変更を破棄):q!:q! と入力して Enter(変更内容を破棄して即終了)
保存せず強制終了(最短・Enter不要)ZQ大文字で ZQ と入力(変更を破棄して即終了)
上書き保存のみ(終了しない):w:w と入力して Enter(作業を続けたいときの一時保存)
強制上書き保存して終了:wq!:wq! と入力して Enter(読み取り専用属性でも上書き試行)

vimを保存して終了する方法(結論)

編集中に文字が入力できる状態(インサートモード)になっている場合は、まず Esc キーでノーマルモードに戻ります。そのうえで次のいずれかを入力してください。

:wq

→ Enter を押すと、変更内容を保存してvimが終了します。迷ったらこれを使えば確実です。

構文(Syntax)

保存・終了系のコマンドはいずれもノーマルモードで実行します。コロン(:)から始まるコマンドは Enter で確定、ZZ・ZQ は2文字のキー入力だけで即座に実行される点が異なります。

[Esc] [コマンド] [Enter]   例: Esc → :wq → Enter
[Esc] [ZZ または ZQ]        例: Esc → ZZ(Enter不要)

実行例(実機で動作確認済み)

編集して保存し、終了する(:wq)

  1. vim sample.txt でファイルを開く
  2. i でインサートモードに入り、内容を編集する
  3. Esc でノーマルモードに戻る
  4. :wq と入力して Enter

→ 変更内容が保存され、vimが終了します。:wq は変更がなくてもファイルへの書き込みを実行するため、実機での検証でも更新日時(mtime)が毎回変わることを確認しています。

変更がなければ書き込まずに終了する(:x / ZZ)

ファイルを開いただけで何も編集していない場合、:x または ZZ を使うと余計な書き込みが発生しません。

:x

→ 変更がある場合のみ保存して終了し、変更がなければファイルを書き換えずにそのまま終了します。実機検証でも、無変更時は更新日時が変わらないことを確認済みです。ノーマルモードで ZZ(2回連続で入力)と打っても同じ結果になります。

変更を保存せずに終了する(:q!)

誤って編集してしまった場合や、変更を反映したくない場合は次のコマンドで保存せずに終了できます。

:q!

→ 編集内容は破棄され、ファイルは開く前の状態のまま終了します。何も変更していない状態で :q だけを使うと同様に終了できますが、変更がある状態で :q だけを実行すると次のようなエラーになり終了できません。

E37: No write since last change (add ! to override)

→ 保存したい場合は :wq、破棄したい場合は ! を付けて :q! を使います。

注意点:保存や終了に失敗するケース

読み取り専用ファイルを保存しようとしてエラーになる

vim -R で開いた場合や、ファイル自体に書き込み権限がない場合、:wq や :w を実行すると次のエラーが表示され保存できません。

E45: 'readonly' option is set (add ! to override)

→ ! を付けて :wq! を実行すると上書きを試みますが、OSレベルで書き込み権限がない場合は次のエラーになり、結局保存できません(実機検証済み、ファイルの内容は変更されず保持されます)。

E212: Can't open file for writing

→ この場合は一度 :q! で終了し、ファイルの所有者や権限を確認したうえで開き直す必要があります。権限の仕組みは以下の記事で解説しています。

root権限が必要なファイルを編集している

/etc/hosts のようなroot所有のファイルを一般ユーザーで開いて編集した場合も、保存時に E212 エラーになります。

vim /etc/hosts
:wq
E212: Can't open file for writing

→ 編集前に sudo vim /etc/hosts のように sudo を付けて開き直してください。sudo の使い方は下記の記事で詳しく解説しています。

関連コマンド・関連記事

備考

  • 環境依存: 多くの Linux で vi コマンドは vim にリンクされていますが、BSD 系では別物の場合があります。
  • 大文字小文字の違い: ZZ(保存して終了)と ZQ(保存せず終了)は、いずれも大文字2文字で入力します。小文字の zz は別のコマンド(カーソル行を画面中央に表示)なので注意してください。
  • 設定ファイル: ユーザー単位の設定は ~/.vimrc、システム全体の設定は /etc/vim/vimrc が利用されます。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント