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)
vim sample.txtでファイルを開くiでインサートモードに入り、内容を編集するEscでノーマルモードに戻る: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 の使い方は下記の記事で詳しく解説しています。
関連コマンド・関連記事
vi:vimの元となった古典的エディタ。保存・終了コマンドは共通nano: より初心者向けのシンプルなテキストエディタ- 初めてのVim入門ガイド:基本操作と便利コマンドで使い方をマスター! : モードの切り替えや検索・置換など、保存・終了以外の基本操作を網羅
- sudo コマンドの使い方|root 権限の取得と sudoers の設定 : root所有ファイルを編集・保存したいときの権限昇格方法
- パーミッションとは?Linuxの権限の仕組みとchmodによる変更方法 : 読み取り専用エラーの根本原因になる権限の仕組み
備考
- 環境依存: 多くの Linux で
viコマンドはvimにリンクされていますが、BSD 系では別物の場合があります。 - 大文字小文字の違い:
ZZ(保存して終了)とZQ(保存せず終了)は、いずれも大文字2文字で入力します。小文字のzzは別のコマンド(カーソル行を画面中央に表示)なので注意してください。 - 設定ファイル: ユーザー単位の設定は
~/.vimrc、システム全体の設定は/etc/vim/vimrcが利用されます。
参考
- manページ: https://man7.org/linux/man-pages/man1/vim.1.html
- 公式サイト: https://www.vim.org/
- GitHub (開発リポジトリ): https://github.com/vim/vim

コメント