⏱ 約 35 分
Part 1Chapter 05/Linux 基礎

ファイルを書き換える(vim 入門)

ノーマルモード・インサートモード・コマンドラインモードという 3 つのモードの仕組みを理解し、vim でファイルを開いて編集・保存・終了できるようになります。

所要時間約 35 分
章タイプstandard
前提知識Chapter 1-4(SSH / パス / ファイル操作 / grep)
使用機材踏み台 workstation01 + 演習用サーバ learner01
関連章前: Chapter 4「テキストの検索と絞り込み」/ 後: Chapter 6「環境変数とシェルの仕組み」

「読む」の先へ

前の章まで、ファイルを「作り・動かし・読み・探す」ことができるようになりました。サーバに入って、ログから必要な情報を取り出せる ── ここまでで観察は十分できます。

ただ、現場でやることの半分は 「設定を変える」 です。SSH の認証方式を変えたい、nginx の設定ファイルを編集したい、cron で動かすスクリプトを書きたい ── これらはすべてファイルを書き換える作業で、そのためには エディタ が要ります。

Linux サーバの世界では vim(または vi)が事実上の標準エディタです。GUI が一切ない最小構成のサーバにも必ず入っています。Part 3 以降、SSH・nginx・cron の設定変更で毎回登場します

最初の壁は「終了の仕方が分からない」── 原因はひとつ。vim は モード という仕組みを持つエディタで、今どのモードにいるかによって同じキーが違う動きをする からです。この仕組みさえ理解すれば、あとは自然に使えるようになります。

この章を終えるとできること

vim 体験のフローは 4 ステップ。その裏側に 3 つのモード が動いています(モードは次のセクションで詳しく扱います)。

$ vim memo.txt
起動 = NORMAL
① 開く
vim ファイル名 で
ファイルを開く
vim ...
-- NORMAL --
hjkl移動
ddyy行操作
② 編集モード
移動・削除・コピー
「指示を出す」
hjkl · dd · yy · u
i→ INSERT
-- INSERT --
③ 入力モード
i / a / o で入って
そのままタイプする
i · a · o
Esc
:wq
保存して終了
④ 終わる
:wq で保存 / :q! で
強制脱出
:wq · :q!

この 4 ステップの裏側で 3 つのモード(ノーマル / インサート / コマンドライン)が切り替わります。モード遷移を把握できれば、vim は怖くなくなります ── これが次のセクションです。

概念説明

1. vim が「難しい」理由 ── モード

多くのエディタは「開けばすぐ文字を入力できる」です。vim はそうではありません。vim には 3 つのモード があり、今どのモードにいるかで同じキーが違う動作をします。「d を押した」とき、ノーマルなら「削除しろという指示」、インサートなら「アルファベットの d を入力」── これが vim の核です。

モード役割(気分)
ノーマルモードサーバに「指示を出す」モードdd = 行を消せ / gg = 先頭へ行け
インサートモード単純に「タイプする」モードキーボードを打てば、その文字がそのまま入る
コマンドラインモード: で始まる「業務命令」を打つモード:wq = 保存して終了 / :30 = 30 行目へ

2. モードの遷移 ── どう行き来するか

すべての出発点はノーマルモード。起動直後もここから始まります。Esc は常に「ノーマルに戻る緊急脱出キー」 ── これだけ覚えておけば、vim で詰むことはありません。

📐 vim モード遷移図
normal mode
指示を出す(起動直後はここ / Esc で必ず戻る)
i / a / o Esc
: Enter / Esc
insert mode
タイプ入力
command-line mode
:wq / :q! / :30 など
💡 焦らず Esc を押せば必ずノーマルに戻れる ── これだけが vim 習得の第一歩です。「何が起きているか分からない」「変なキーを押してしまった」と感じたら、まず Esc

3. 「今どのモードにいるか」は左下を見る

vim は画面の 左下 に現在のモードを表示します。迷ったら左下を見る が鉄則です。下のタブを切り替えると、同じ画面の左下表示がモードごとにどう変わるかが確認できます。

student@learner01: ~/memo.txt — vim
1learner01 へのメモ
2作成日: 2026-05-15
3担当: student
~~
~~
~~
~~
(何も表示なし) "memo.txt" 3L, 56B   2,8  Top
ノーマルモード: 左下には何も表示されません。起動直後はここから始まります。h j k l で移動、dd で削除、i でインサートへ。

「文字が入力できない」と思ったら、左下が空っぽ(ノーマル)になっていることがほとんどです。i を押して -- INSERT -- に切り替えてから入力します。

4. 編集モード(ノーマルモード)でできること

ノーマルモードは 「指示を出す」 モードです。短いキーで強力な操作ができます。最初の演習で使うものを中心に並べます。

4-1. カーソル移動

キー動作
h / j / k / l左 / 下 / 上 / 右(矢印キーでも可)
ggファイルの先頭へジャンプ
Gファイルの末尾へジャンプ
:30Enter30 行目へジャンプ: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. 検索

vim 内コマンド
打つキー動作
/パターン → Enter前方検索(n で次のマッチ / N で前へ)

Chapter 4 で扱った grep のファイル内版です。/PasswordAuthentication で SSH 設定ファイルの該当行に一発で飛べます。

5. コマンドラインモードでできること

: を押すとコマンドラインモードに入り、画面 左下 にカーソルが移ります。

コマンド動作
:w保存(Write)─ 終了しない
:wq保存して終了(Write and Quit)
:q終了(変更がなければ閉じる)
:q!強制終了(変更を破棄)── 緊急脱出
:3030 行目へジャンプ
:q! を最初に覚える ── これさえ知っていれば、vim でどうにもならなくなることはありません。

試してみよう:メモを書いて行編集を試す

シナリオ: 「learner01 への作業メモを vim で書き、行コピー・行削除・取り消しを体験する」 ── 自分のホームに memo.txt を作り、書いて、ちょっと編集して、保存します。実際の設定ファイル編集と同じ流れを安全な環境で体験します。

🛟 演習の安全範囲

触るのは ~/memo.txt(student のホームの中)だけです。システムファイルは一切触りません。
vim でどうにもならなくなったら Esc:q!Enter で強制終了 ── ファイルを作り直せばやり直せます。

まず learner01 に入る

bash · workstation01 から SSH
ssh student@learner01

開く ── vim でファイルを開く

bash
vim ~/memo.txt

画面が切り替わります。左下を見てください ── 何も表示されていなければノーマルモードです。まだ文字は入力できません

入力モードに入って 5 行書く

i を押します。左下に -- INSERT -- と表示されれば成功。そのまま入力します。

vim 内での入力(-- INSERT -- が出ている状態)
learner01 へのメモ
作成日: 2026-05-15
担当: student
状態: 演習中
備考: vim を初めて使う

書き終えたら Esc を押します。-- INSERT -- が消えてノーマルモードに戻ります。

編集モードで行を削除して取り消す

カーソルを 5 行目「備考:」に移動します。

vim 内でのキー操作(ノーマルモード)― 左列のキーだけを vim に入力します
打つキー何が起きるか
G末尾の行(5 行目)へジャンプ
dd5 行目を削除(4 行になる)
u取り消し(5 行目が復活する)

u で「やってしまった操作」を戻せる ── これが現場で vim を安心して使える理由のひとつです。

行コピー → 貼り付け

2 行目「作成日:」に移動し、ヤンクして貼り付けます。

vim 内でのキー操作(ノーマルモード)― 左列のキーだけを vim に入力します
打つキー何が起きるか
:2 → Enter2 行目へジャンプ
yy現在の行をコピー(ヤンク)
p下に貼り付け

「作成日: 2026-05-15」がもう 1 行コピーされて 3 行目に挿入されました。設定ファイルで「似た行をもう 1 個増やしてちょっと変える」── という実用パターンの基本動作です。

行ジャンプを試す

vim 内でのキー操作(ノーマルモード)― 左列のキーだけを vim に入力します
打つキー何が起きるか
:1 → Enter1 行目へジャンプ
G末尾へジャンプ
gg先頭へジャンプ

数百行の設定ファイルを読むとき、:142 のような行番号ジャンプが効きます。

終わる ── 保存して終了

vim 内でのキー操作
打つキー何が起きるか
:wq → Enter保存して終了

vim が閉じてターミナルに戻ります。

確認

bash
cat ~/memo.txt
wc -l ~/memo.txt    # 6 行になっているはず(コピーで 1 行増えた)

詰まったら

💡 軽く方向だけ
vim は「今どのモードにいるか」を常に意識するのが最初の関門です。左下を見る ── ここに -- INSERT -- があればタイプモード、何もなければノーマルモード。迷ったら Esc で必ずノーマルに戻れます。
💡 具体的な手順
bash(ターミナルで実行)
vim ~/memo.txt

vim が開いたらノーマルモードです。左列のキーだけを順番に入力します:

打つキー何が起きるか
iインサートモードへ(左下に -- INSERT -- が出る)
(5 行入力)テキストをそのまま入力
Escノーマルモードに戻る
G末尾へジャンプ
dd5 行目を削除
u取り消し
:2 → Enter2 行目へジャンプ
yyヤンク(コピー)
p下に貼り付け
:wq → Enter保存して終了
「文字が入力できない」ときは i を押したか確認。: が出ないときは先に Esc でノーマルへ戻る。
✅ 答えを見る
bash(ターミナルで実行)
vim ~/memo.txt

vim が開いたらノーマルモードです。左列のキーだけを順番に入力します:

打つキー何が起きるか
iインサートモードへ
(以下を 5 行入力)learner01 へのメモ / 作成日: 2026-05-15 / 担当: student / 状態: 演習中 / 備考: vim を初めて使う
Escノーマルモードに戻る
G末尾へジャンプ
dd5 行目を削除
u取り消し(5 行目が復活)
:2 → Enter2 行目へジャンプ
yyヤンク(コピー)
p下に貼り付け
:wq → Enter保存して終了
bash(ターミナルで実行 ─ vim 終了後)
cat ~/memo.txt
wc -l ~/memo.txt

ポイント: Esc:q! を緊急脱出口として体に染み込ませる。u で取り消せる安心感を体感する。この 2 つが分かっていれば、設定ファイルを編集するときも怖くなくなります。

AI に相談

AI わからないところを自由に質問できます
この章の内容を踏まえて、Linux の基礎にやさしく答えます

修了確認

学んだことが身についたか、2 問だけ確認してみましょう。

問 1 · モードとモード遷移
vim には 3 つのモードがあります。

① それぞれを「何をするためのモード」か一言で答えてください
② 「今どのモードにいるか」はどこを見れば分かりますか?
③ どのモードからでもノーマルモードに戻るキーは?
問 2 · 実用操作
次の vim コマンドはそれぞれ何をしますか?

dd   /   yy → p   /   u   /   :42   /   :wq   /   :q!

次の章へ

次は Chapter 6「環境変数とシェルの仕組み」 です。

vim でファイルを書き換えられるようになると、次に出てくる疑問は 「どこに何を書けば反映されるのか」 です。.bashrc.bash_profile の違い、PATH を通す意味、command not found の原因 ── これらをひと通り整理します。