このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Linux基礎:viエディタの基本

viエディタの基本
サーバー管理や設定変更の多くは「テキスト編集」から始まります。Linux の標準的なテキストエディタである vi(Vim) は、GUI のない環境やレスキューモードでも使える“最後の砦”。操作に独特の癖はあるものの、コマンドモードと挿入モードを行き来してキーボードだけで機敏に編集できるのが強みです。
ここでは Rocky Linux を想定し、試験(LPIC)でも問われる 起動・終了、モード切替、保存、基本編集、検索、設定 を、表や図で体系的に整理します。

1.viエディタの全体像
1.1. vi と Vim の関係・特長
| 項目 | 内容 |
|---|---|
| 実体 | 多くのディストリで vi は vim(Vi IMproved)へのリンク |
| 利点 | 軽量・常駐不要・CLIのみで完結・カスタム性が高い |
| 用途 | 設定ファイル編集、ログのスポット閲覧、リモート保守 |
| 試験観点 | Vim固有拡張より「基本操作(モード/保存/移動/編集/検索)」が中心 |
1.2. 2つのモード
- コマンドモード:入力したキーが「編集コマンド」になる(移動・削除・保存など)
- 挿入モード:文字入力そのものがファイルに挿入される
モード遷移(図)
コマンドモード ── i / a / o / I / A / O ─→ 挿入モード

説明:通常はコマンドモードで開始。文字を書きたい瞬間だけ挿入モードへ入り、終わったら Esc で戻す—これが vi の基本リズムです。
2.起動・終了・保存
2.1. vi コマンド(Vim)の書式と主なオプション
書式
vi [オプション] [ファイル...]主なオプション(よく使うもの)
| オプション | 説明 |
|---|---|
-R | 読み取り専用で開く(上書き防止) |
-u NONE | 個人設定(vimrc)を無効化して素の挙動で起動 |
-b | バイナリモード |
-oN | 水平に N 分割して複数ファイルを開く。 |
-ON | 垂直に N 分割して複数ファイルを開く。 |
-p | タブで複数ファイルを開く。 |
例:読み取り専用で設定ファイルを安全に確認
[user@rocky9 ~]$ vi -R /etc/ssh/sshd_config
2.2. 起動と基本画面
[user@rocky9 ~]$ vi /home/user/work/notes.txt- 指定ファイルが無ければ新規作成状態で開く
- 画面左の
~は“まだ内容のない行”を示す(Vim既定の表示)
2.3. 保存・終了(コマンドラインモード)
コマンドモードで : を押すと画面最下段に入力欄(コマンドライン)が出ます。
| 入力 | 動作 |
|---|---|
:w | 保存(書き込み) |
:w 新名 | 別名で保存 |
:q | 終了(未保存変更があると拒否) |
:wq | 保存して終了 |
ZZ | 保存して終了(Shift+Zを2回) |
:q! | 変更を破棄して強制終了 |
例:編集して保存・終了
:wq3.カーソル移動とモード切替
3.1. カーソル移動(コマンドモード)
| キー | 意味 |
|---|---|
h/j/k/l | 左/下/上/右 |
0 / $ | 行頭 / 行末 |
gg / G | 先頭 / 末尾 |
w / b | 次/前の単語先頭へ |
Ctrl+f / Ctrl+b | 1画面 下 / 上 |
ヒント:
5jのように数字を前置すると 5回繰り返し。

3.2. 挿入モードに入るコマンド

| キー | どこから入力を始めるか |
|---|---|
i / a | 現在位置 / 1文字右から |
I / A | 行頭 / 行末から |
o / O | 下行 / 上行に空行を作って開始 |
迷ったら
Escを押して“コマンドモードに戻る”のが安全策。
4.よく使う編集操作
4.1. 行・文字の削除/コピー/貼り付け
| コマンド(コマンドモード) | 動作 |
|---|---|
dd | 行を切り取り(ヤンクバッファに格納) |
yy | 行をコピー |
p / P | 現在行の下 / 上に貼り付け。 |
x / X | カーソル位置の1文字削除 / 左1文字削除 |
. | 直前の編集操作を繰り返す。 |
u / Ctrl+r | 取り消し / やり直し。 |
例:tanaka の行を2行切り取り → 直後に3回貼り付け
2dd→3p
4.2. 範囲削除の典型
| 例 | 意味 |
|---|---|
d$ | カーソルから行末まで削除 |
d0 | 行頭まで削除 |
dw | 次の単語境界まで削除 |
dgg / dG | 先頭まで / 末尾まで削除 |
5.検索・置換・表示設定
5.1. 検索
| 入力 | 意味 |
|---|---|
/キーワード | 下方向へ検索 |
?キーワード | 上方向へ検索 |
n / N | 同方向 / 逆方向に次を検索 |
例:/server → n で次の server へジャンプ
5.2. 一括置換(基本)
| 入力 | 意味 |
|---|---|
:%s/old/new/ | 先頭〜末尾まで old を1行ずつ最初の1件置換 |
:%s/old/new/g | 先頭〜末尾まで全件置換 |
:.,$s/old/new/g | 現在行〜末尾まで全件置換 |
5.3. :set で見やすく
| コマンド | 効果 |
|---|---|
:set number / :set nonumber | 行番号の表示/非表示 |
:set hlsearch / :set nohlsearch | 検索結果をハイライト |
:set ignorecase / :set smartcase | 大文字小文字を無視 / 先頭に大文字があれば区別 |
:set ts=4 sw=4 et | タブ幅/インデント/スペース展開 |
6.Rocky Linux 環境での実例
ここでは別の例として、
/etc/hostsを読取専用で開き、メモ用ファイルmemo_dns.txtを新規作成・編集して保存してみます。
6.1. 読取専用で安全に確認
[user@rocky9 ~]$ vi -R /etc/hosts6.2. 新規ファイルを開いて編集
[user@rocky9 ~]$ vi memo_dns.txt
# 挿入モードに入り、追記
i
DNSメモ:
- /etc/resolv.conf を確認
- nameserver の到達性は ping で確認
<Esc>
:w
:wq補足:日本語入力
日本語入力については、以下の記事を参考にしてください。
「問題10」のところに日本語入力の設定方法を解説しています。
7.トラブル対処の要点
| 事象 | 対処 |
|---|---|
| 何モードかわからない | まず Esc を押す(何度押しても安全) |
| 終了できない(未保存) | :wq で保存終了、破棄なら :q! |
間違って Ctrl+Z | シェルに戻っただけ。fg で前面復帰してから終了 |
| 設定が邪魔 | vi -u NONE で素の挙動を確認 |
8.便利チートシート(最小セット)
| 目的 | キー/コマンド |
|---|---|
| 文字入力開始/終了 | i / Esc |
| 保存/終了 | :w / :q / :wq / :q! / ZZ |
| 行の操作 | dd(切り取り) / yy(コピー) / p(貼り付け) |
| 移動 | h j k l / 0 $ / gg G |
| 検索 | /word、次へ n |
| 取り消し/やり直し | u / Ctrl+r |
まとめ
- vi(Vim)はCLIだけで完結する標準エディタ。サーバー運用で不可欠。
- モード切替(コマンド↔挿入)が要点。入力は必要なときだけ挿入モード、終われば
Esc。 - 保存・終了(
:w,:q,:wq,:q!,ZZ) を最初に体で覚える。 - 移動(
h j k l、0/$、gg/G)と編集(dd/yy/p) が基本動作。 - 検索(
/)と:setで“見つけやすく・見やすく”。
