Instiq
第3章 · GNUとUnixのコマンド·v1.0.0·更新 2026/7/6·読了目安 約10分

変更要約: 初版(主題1.03・副主題1.03.1〜1.03.5に対応)

3.5エディタを使った基本的なファイル編集の実行

この節の要点

Linux 標準エディタ vi(vim)の基本操作を学びます。ノーマルモード挿入モードの切り替え(i・o・a・ESC)、カーソル移動(h・j・k・l)、編集(dd・yy・p・c・d・y)、検索(/・?)、保存と終了(ZZ・:w!・:q!・:e!)、既定エディタの切り替え(EDITORnanoemacs)を押さえます。

サーバーに GUI はなくても vi必ずあります。設定ファイルを1行直す・コメントアウトする、といった日常作業のために、最低限の vi 操作は Linux 管理者の共通言語です。つまずきの9割はモードの概念なので、そこから固めます。

3.5.12つのモード

  • ノーマルモード(起動直後)=キーがコマンドとして働く。挿入モード=キーが文字入力になる。挿入へ=i(カーソル位置)・a(直後)・o(下に新しい行)。戻る=ESC
  • カーソル移動(ノーマルモード)=h(左)・j(下)・k(上)・l(右)。
  • 検索=/文字列(下方向)・?文字列(上方向)。n で次の一致へ。

3.5.2編集・保存・終了

  • 行単位の編集=dd(行を削除しヤンクバッファへ)・yy(行をコピー=ヤンク)・p(貼り付け)。dyc(変更=削除して挿入モードへ)は移動と組み合わせる(dw=単語を削除)。
  • 保存・終了=ZZ(保存して終了)・:w!(強制保存)・:q!保存せず終了)・:e!(最後の保存状態に読み直し=やり直し)。:wq も保存終了。
  • 既定エディタの変更=環境変数 EDITORexport EDITOR=nano)。nano(画面下にキー操作が常時表示=初心者向き)や emacs も代表的なエディタ。
試験ポイント

「編集を破棄して終了=:q!」「保存して終了=ZZ(または :wq)」「行削除=dd・行コピー=yy・貼り付け=p」「入力が効かない→ ノーマルモードにいる(i で挿入へ)」 が定番です。crontab など他コマンドが起動するエディタを変えるのは EDITOR 変数、も頻出です。

設定ファイル修正の実戦手順を一往復してみます。vi /etc/hosts で開くとノーマルモードです。/192.168 で対象行へ飛び、yyp で行を複製してから i挿入モードに入り IP を書き換え、ESC で戻ります。不要になった旧行は dd で削除。ここで「思ったより壊してしまった」と感じたら、:e!最後に保存した状態へ丸ごと読み直せますし、そもそも保存したくなければ :q! で逃げられます。納得できたら ZZ(または :wq)で保存終了です。この「いつでも無傷で逃げられる」出口(:q!・:e!)を知っていることが、vi を怖がらずに使う最大のコツです。dd や yy がヤンクバッファ経由で p と対になっている(=dd→p で行の移動になる)ことも、操作を組み合わせで覚える助けになります。

目的キー/コマンド備考
挿入モードへi / a / o戻るのは ESC
行の削除/コピー/貼り付けdd / yy / pdd→p で行移動
保存して終了/破棄して終了ZZ(:wq)/ :q!:e! は保存時点へ読み直し
既定エディタの変更export EDITOR=nanocrontab 等が参照
注意

ひっかけ: 「:q! は変更を保存して終了する」は誤りです。:q! は保存せず終了(破棄)で、保存終了は ZZ/:wq。また「vi を開いてすぐ文字を打てば入力できる」も誤り=起動直後はノーマルモードなので、i などで挿入モードに入るまで文字は入力されません(j を打てばカーソルが下に動くだけです)。

vi のモード切替・編集キー・保存/破棄の出口を整理した図。
:q! と :e! が安全な逃げ道

3.5.3この節のまとめ

  • ノーマル⇔挿入(i/a/o と ESC)・移動 hjkl・検索 /・?。編集は dd/yy/p(ヤンクバッファ)
  • 出口=ZZ/:wq(保存)・:q!(破棄)・:e!(読み直し)。既定エディタは EDITOR 変数(nano/emacs)

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. vi で設定ファイルを編集していたが、変更をすべて破棄してエディタを終了したい。適切なコマンドは?

Q2. vi のノーマルモードで、現在の行を丸ごとコピーして次の行に貼り付けたい。キー操作の組み合わせは?

Q3. crontab -e で起動するエディタを nano に変えたい。設定すべき環境変数は?

理解度を確認第3章「GNUとUnixのコマンド」の問題を解く