vim で編集中のファイルを保存して終了する基本コマンドは :wq です。ノーマルモードで :wq と入力して Enter を押すと、変更内容を保存したうえで vim が終了します。
この記事では :wq・:x・ZZ の使い分けと、保存や終了に失敗するときの対処法を、実機での動作確認結果とあわせて解説します。
vimを保存して終了する方法(結論)
編集中に文字が入力できる状態(インサートモード)になっている場合は、まず Esc キーでノーマルモードに戻ります。そのうえで次のいずれかを入力してください。
:wq
→ Enter を押すと、変更内容を保存してvimが終了します。迷ったらこれを使えば確実です。
構文(Syntax)
保存・終了系のコマンドはいずれもノーマルモードで実行します。コロン(:)から始まるコマンドは Enter で確定、ZZ・ZQ は2文字のキー入力だけで即座に実行される点が異なります。
[Esc] [コマンド] [Enter] 例: Esc → :wq → Enter
[Esc] [ZZ または ZQ] 例: Esc → ZZ(Enter不要)
主なコマンド一覧
| コマンド | 動作 | 備考 |
|---|---|---|
:w | 上書き保存する(終了しない) | 編集を続けたいときに使う |
:q | 変更がなければ終了する | 未保存の変更があると E37 エラーで終了できない |
:wq | 保存して終了する | 変更の有無にかかわらず常に上書き保存する |
:x | 変更があるときだけ保存して終了する | 変更がなければファイルを書き換えずに終了(更新日時も変わらない) |
ZZ | :x と同じ(ノーマルモードのショートカット) | コロン入力・Enter不要でそのまま終了 |
:q! | 変更を破棄して終了する | 保存せずに終了したいときに使う(強制終了) |
ZQ | :q! と同じ(ノーマルモードのショートカット) | 保存せず即終了 |
:wq! | 読み取り専用でも上書きを試みて保存終了する | OS側の書き込み権限がない場合は失敗する(後述) |
実行例(実機で動作確認済み)
編集して保存し、終了する(: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

コメント