変更要約: 初版(主題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!)、既定エディタの切り替え(EDITOR・nano・emacs)を押さえます。
サーバーに GUI はなくても vi は必ずあります。設定ファイルを1行直す・コメントアウトする、といった日常作業のために、最低限の vi 操作は Linux 管理者の共通言語です。つまずきの9割はモードの概念なので、そこから固めます。
3.5.12つのモード
- ノーマルモード(起動直後)=キーがコマンドとして働く。挿入モード=キーが文字入力になる。挿入へ=i(カーソル位置)・a(直後)・o(下に新しい行)。戻る=ESC。
- カーソル移動(ノーマルモード)=h(左)・j(下)・k(上)・l(右)。
- 検索=/文字列(下方向)・?文字列(上方向)。n で次の一致へ。
3.5.2編集・保存・終了
- 行単位の編集=dd(行を削除しヤンクバッファへ)・yy(行をコピー=ヤンク)・p(貼り付け)。d・y・c(変更=削除して挿入モードへ)は移動と組み合わせる(dw=単語を削除)。
- 保存・終了=ZZ(保存して終了)・:w!(強制保存)・:q!(保存せず終了)・:e!(最後の保存状態に読み直し=やり直し)。:wq も保存終了。
- 既定エディタの変更=環境変数 EDITOR(
export EDITOR=nano)。nano(画面下にキー操作が常時表示=初心者向き)や emacs も代表的なエディタ。
「編集を破棄して終了=:q!」「保存して終了=ZZ(または :wq)」「行削除=dd・行コピー=yy・貼り付け=p」「入力が効かない→ ノーマルモードにいる(i で挿入へ)」 が定番です。crontab など他コマンドが起動するエディタを変えるのは EDITOR 変数、も頻出です。
設定ファイル修正の実戦手順を一往復してみます。vi /etc/hosts で開くとノーマルモードです。/192.168 で対象行へ飛び、yy → p で行を複製してから i で挿入モードに入り IP を書き換え、ESC で戻ります。不要になった旧行は dd で削除。ここで「思ったより壊してしまった」と感じたら、:e! で最後に保存した状態へ丸ごと読み直せますし、そもそも保存したくなければ :q! で逃げられます。納得できたら ZZ(または :wq)で保存終了です。この「いつでも無傷で逃げられる」出口(:q!・:e!)を知っていることが、vi を怖がらずに使う最大のコツです。dd や yy がヤンクバッファ経由で p と対になっている(=dd→p で行の移動になる)ことも、操作を組み合わせで覚える助けになります。
| 目的 | キー/コマンド | 備考 |
|---|---|---|
| 挿入モードへ | i / a / o | 戻るのは ESC |
| 行の削除/コピー/貼り付け | dd / yy / p | dd→p で行移動 |
| 保存して終了/破棄して終了 | ZZ(:wq)/ :q! | :e! は保存時点へ読み直し |
| 既定エディタの変更 | export EDITOR=nano | crontab 等が参照 |
ひっかけ: 「:q! は変更を保存して終了する」は誤りです。:q! は保存せず終了(破棄)で、保存終了は ZZ/:wq。また「vi を開いてすぐ文字を打てば入力できる」も誤り=起動直後はノーマルモードなので、i などで挿入モードに入るまで文字は入力されません(j を打てばカーソルが下に動くだけです)。
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 に変えたい。設定すべき環境変数は?

