ファイルを書き換える(vim 入門)
ノーマルモード・インサートモード・コマンドラインモードという 3 つのモードの仕組みを理解し、vim でファイルを開いて編集・保存・終了できるようになります。
| 所要時間 | 約 35 分 |
|---|---|
| 章タイプ | standard |
| 前提知識 | Chapter 1-4(SSH / パス / ファイル操作 / grep) |
| 使用機材 | 踏み台 workstation01 + 演習用サーバ learner01 |
| 関連章 | 前: Chapter 4「テキストの検索と絞り込み」/ 後: Chapter 6「環境変数とシェルの仕組み」 |
「読む」の先へ
前の章まで、ファイルを「作り・動かし・読み・探す」ことができるようになりました。サーバに入って、ログから必要な情報を取り出せる ── ここまでで観察は十分できます。
ただ、現場でやることの半分は 「設定を変える」 です。SSH の認証方式を変えたい、nginx の設定ファイルを編集したい、cron で動かすスクリプトを書きたい ── これらはすべてファイルを書き換える作業で、そのためには エディタ が要ります。
vim(または vi)が事実上の標準エディタです。GUI が一切ない最小構成のサーバにも必ず入っています。Part 3 以降、SSH・nginx・cron の設定変更で毎回登場します。最初の壁は「終了の仕方が分からない」── 原因はひとつ。vim は モード という仕組みを持つエディタで、今どのモードにいるかによって同じキーが違う動きをする からです。この仕組みさえ理解すれば、あとは自然に使えるようになります。
この章を終えるとできること
vim 体験のフローは 4 ステップ。その裏側に 3 つのモード が動いています(モードは次のセクションで詳しく扱います)。
ファイルを開く
「指示を出す」
そのままタイプする
強制脱出
この 4 ステップの裏側で 3 つのモード(ノーマル / インサート / コマンドライン)が切り替わります。モード遷移を把握できれば、vim は怖くなくなります ── これが次のセクションです。
概念説明
1. vim が「難しい」理由 ── モード
多くのエディタは「開けばすぐ文字を入力できる」です。vim はそうではありません。vim には 3 つのモード があり、今どのモードにいるかで同じキーが違う動作をします。「d を押した」とき、ノーマルなら「削除しろという指示」、インサートなら「アルファベットの d を入力」── これが vim の核です。
| モード | 役割(気分) | 例 |
|---|---|---|
| ノーマルモード | サーバに「指示を出す」モード | dd = 行を消せ / gg = 先頭へ行け |
| インサートモード | 単純に「タイプする」モード | キーボードを打てば、その文字がそのまま入る |
| コマンドラインモード | : で始まる「業務命令」を打つモード | :wq = 保存して終了 / :30 = 30 行目へ |
2. モードの遷移 ── どう行き来するか
すべての出発点はノーマルモード。起動直後もここから始まります。Esc は常に「ノーマルに戻る緊急脱出キー」 ── これだけ覚えておけば、vim で詰むことはありません。
Esc。3. 「今どのモードにいるか」は左下を見る
vim は画面の 左下 に現在のモードを表示します。迷ったら左下を見る が鉄則です。下のタブを切り替えると、同じ画面の左下表示がモードごとにどう変わるかが確認できます。
h j k l で移動、dd で削除、i でインサートへ。
「文字が入力できない」と思ったら、左下が空っぽ(ノーマル)になっていることがほとんどです。i を押して -- INSERT -- に切り替えてから入力します。
4. 編集モード(ノーマルモード)でできること
ノーマルモードは 「指示を出す」 モードです。短いキーで強力な操作ができます。最初の演習で使うものを中心に並べます。
4-1. カーソル移動
| キー | 動作 |
|---|---|
h / j / k / l | 左 / 下 / 上 / 右(矢印キーでも可) |
gg | ファイルの先頭へジャンプ |
G | ファイルの末尾へジャンプ |
:30 → Enter | 30 行目へジャンプ(:N で N 行目へ) |
設定ファイルで「ログ出力の設定が 142 行目にある」と grep で分かったとき、:142 で一発で飛べます。
4-2. 編集(行単位)
| キー | 動作 |
|---|---|
dd | カーソル行を 削除(クリップボードにも入る) |
yy | カーソル行を コピー(ヤンク) |
p | コピー / 削除した行を 下に貼り付け |
u | 直前の操作を 取り消し(Undo) |
Ctrl + r | 取り消したものを やり直し(Redo) |
dd で行を消したが「間違えた」── u を押せば戻ります。設定ファイルを編集中の保険として u の存在は安心材料です。
4-3. インサートモードへの入り方(3 パターン)
| キー | どこから入力が始まるか |
|---|---|
i | カーソルの 前 から(最も基本) |
a | カーソルの 後 から(行末に追記したいとき便利) |
o | カーソル行の 下に新しい行 を開いて入力 |
a(append)と o(open line)を使い分けると、「行末に `,` を足したい」「次の行を追加したい」が 1 キーで完結します。
4-4. 検索
| 打つキー | 動作 |
|---|---|
| /パターン → Enter | 前方検索(n で次のマッチ / N で前へ) |
Chapter 4 で扱った grep のファイル内版です。/PasswordAuthentication で SSH 設定ファイルの該当行に一発で飛べます。
5. コマンドラインモードでできること
: を押すとコマンドラインモードに入り、画面 左下 にカーソルが移ります。
| コマンド | 動作 |
|---|---|
:w | 保存(Write)─ 終了しない |
:wq | 保存して終了(Write and Quit) |
:q | 終了(変更がなければ閉じる) |
:q! | 強制終了(変更を破棄)── 緊急脱出 |
:30 | 30 行目へジャンプ |
:q! を最初に覚える ── これさえ知っていれば、vim でどうにもならなくなることはありません。試してみよう:メモを書いて行編集を試す
シナリオ: 「learner01 への作業メモを vim で書き、行コピー・行削除・取り消しを体験する」 ── 自分のホームに memo.txt を作り、書いて、ちょっと編集して、保存します。実際の設定ファイル編集と同じ流れを安全な環境で体験します。
触るのは ~/memo.txt(student のホームの中)だけです。システムファイルは一切触りません。
vim でどうにもならなくなったら Esc → :q! → Enter で強制終了 ── ファイルを作り直せばやり直せます。
まず learner01 に入る
ssh student@learner01
開く ── vim でファイルを開く
vim ~/memo.txt
画面が切り替わります。左下を見てください ── 何も表示されていなければノーマルモードです。まだ文字は入力できません。
入力モードに入って 5 行書く
i を押します。左下に -- INSERT -- と表示されれば成功。そのまま入力します。
learner01 へのメモ 作成日: 2026-05-15 担当: student 状態: 演習中 備考: vim を初めて使う
書き終えたら Esc を押します。-- INSERT -- が消えてノーマルモードに戻ります。
編集モードで行を削除して取り消す
カーソルを 5 行目「備考:」に移動します。
| 打つキー | 何が起きるか |
|---|---|
| G | 末尾の行(5 行目)へジャンプ |
| dd | 5 行目を削除(4 行になる) |
| u | 取り消し(5 行目が復活する) |
u で「やってしまった操作」を戻せる ── これが現場で vim を安心して使える理由のひとつです。
行コピー → 貼り付け
2 行目「作成日:」に移動し、ヤンクして貼り付けます。
| 打つキー | 何が起きるか |
|---|---|
| :2 → Enter | 2 行目へジャンプ |
| yy | 現在の行をコピー(ヤンク) |
| p | 下に貼り付け |
「作成日: 2026-05-15」がもう 1 行コピーされて 3 行目に挿入されました。設定ファイルで「似た行をもう 1 個増やしてちょっと変える」── という実用パターンの基本動作です。
行ジャンプを試す
| 打つキー | 何が起きるか |
|---|---|
| :1 → Enter | 1 行目へジャンプ |
| G | 末尾へジャンプ |
| gg | 先頭へジャンプ |
数百行の設定ファイルを読むとき、:142 のような行番号ジャンプが効きます。
終わる ── 保存して終了
| 打つキー | 何が起きるか |
|---|---|
| :wq → Enter | 保存して終了 |
vim が閉じてターミナルに戻ります。
確認
cat ~/memo.txt wc -l ~/memo.txt # 6 行になっているはず(コピーで 1 行増えた)
詰まったら
- 段階ヒント: 定番の詰まりポイントへの段階開示。1 段 → 2 段 → 答え、と少しずつ開けます
- AI に相談: Cloudflare Workers AI に自由質問できる相談窓口(v2 公開予定)
💡 軽く方向だけ
-- INSERT -- があればタイプモード、何もなければノーマルモード。迷ったら Esc で必ずノーマルに戻れます。
💡 具体的な手順
vim ~/memo.txt
vim が開いたらノーマルモードです。左列のキーだけを順番に入力します:
| 打つキー | 何が起きるか |
|---|---|
| i | インサートモードへ(左下に -- INSERT -- が出る) |
| (5 行入力) | テキストをそのまま入力 |
| Esc | ノーマルモードに戻る |
| G | 末尾へジャンプ |
| dd | 5 行目を削除 |
| u | 取り消し |
| :2 → Enter | 2 行目へジャンプ |
| yy | ヤンク(コピー) |
| p | 下に貼り付け |
| :wq → Enter | 保存して終了 |
i を押したか確認。: が出ないときは先に Esc でノーマルへ戻る。
✅ 答えを見る
vim ~/memo.txt
vim が開いたらノーマルモードです。左列のキーだけを順番に入力します:
| 打つキー | 何が起きるか |
|---|---|
| i | インサートモードへ |
| (以下を 5 行入力) | learner01 へのメモ / 作成日: 2026-05-15 / 担当: student / 状態: 演習中 / 備考: vim を初めて使う |
| Esc | ノーマルモードに戻る |
| G | 末尾へジャンプ |
| dd | 5 行目を削除 |
| u | 取り消し(5 行目が復活) |
| :2 → Enter | 2 行目へジャンプ |
| yy | ヤンク(コピー) |
| p | 下に貼り付け |
| :wq → Enter | 保存して終了 |
cat ~/memo.txt wc -l ~/memo.txt
ポイント: Esc → :q! を緊急脱出口として体に染み込ませる。u で取り消せる安心感を体感する。この 2 つが分かっていれば、設定ファイルを編集するときも怖くなくなります。
AI に相談
修了確認
学んだことが身についたか、2 問だけ確認してみましょう。
① それぞれを「何をするためのモード」か一言で答えてください
② 「今どのモードにいるか」はどこを見れば分かりますか?
③ どのモードからでもノーマルモードに戻るキーは?
dd / yy → p / u / :42 / :wq / :q!次の章へ
次は Chapter 6「環境変数とシェルの仕組み」 です。
vim でファイルを書き換えられるようになると、次に出てくる疑問は 「どこに何を書けば反映されるのか」 です。.bashrc と .bash_profile の違い、PATH を通す意味、command not found の原因 ── これらをひと通り整理します。