「Vimを開いたけど、文字が入力できない…」 「カーソルは動くのに、キーを押しても何も起こらない…」 「ESCキーを押せと言われたけど、意味が分からない…」
Vimを初めて使った時、誰もが感じる困惑ですよね。
実は、これがVimの最大の特徴である「ノーマルモード」なんです。最初は戸惑いますが、このモードを理解すれば、マウスを使わずに超高速でテキスト編集ができるようになります。
この記事では、Vimのノーマルモードの基本から、プロが使う高度なコマンドまで、段階的に解説していきます。
読み終わる頃には、「なぜVimmerはノーマルモードを愛するのか」が分かるはずです!
Vimのモードとは? – ノーマルモードの位置づけ

Vimには主に4つのモードがある
主要なモード:
- ノーマルモード – コマンド実行・移動(起動時のデフォルト)
- インサートモード – 文字入力
- ビジュアルモード – 範囲選択
- コマンドラインモード – 検索・置換・保存など
モードの確認方法: 画面左下を見れば、現在のモードが分かります。
- 何も表示されない → ノーマルモード
-- INSERT --
→ インサートモード-- VISUAL --
→ ビジュアルモード
なぜノーマルモードがデフォルトなの?
Vimの哲学:
- テキスト編集は「書く」より「編集する」時間が長い
- 移動・削除・コピーなどの操作が中心
- だから「操作モード」をデフォルトに
普通のエディタと逆の発想なんです!
ノーマルモードへの切り替え – ESCキーが基本
どのモードからでもESCでノーマルモードへ
基本ルール:
どこからでも → ESC → ノーマルモード
代替キー(ESCが遠い場合):
Ctrl + [
– ESCと同じ動作Ctrl + c
– ほぼ同じ(一部挙動が異なる)
多くのVimmerは、CapsLockキーをESCに割り当てて使っています。
基本の移動コマンド – hjklから始めよう
方向キーを使わない移動
基本の4方向:
k
↑
h ← ● → l
↓
j
h
– 左へj
– 下へk
– 上へl
– 右へ
ホームポジションから手を動かさずに移動できるのが最大のメリット!
効率的な移動コマンド
単語単位の移動:
w
– 次の単語の先頭へ(word)b
– 前の単語の先頭へ(back)e
– 単語の末尾へ(end)
行内の移動:
0
– 行頭へ^
– 行の最初の文字へ(空白を無視)$
– 行末へf{文字}
– その文字まで移動(find)
画面単位の移動:
gg
– ファイルの先頭へG
– ファイルの末尾へ{数字}G
– 指定行へジャンプ(例:10G
で10行目)Ctrl + f
– 1画面下へ(forward)Ctrl + b
– 1画面上へ(back)
編集コマンド – ノーマルモードのまま編集
削除コマンド
基本の削除:
x
– カーソル位置の1文字削除dd
– 現在行を削除dw
– 単語を削除d$
– カーソルから行末まで削除d0
– カーソルから行頭まで削除
数字との組み合わせ:
3dd
– 3行削除5x
– 5文字削除2dw
– 2単語削除
コピー&ペースト(ヤンク&プット)
コピー(ヤンク):
yy
– 現在行をコピーyw
– 単語をコピーy$
– カーソルから行末までコピー
ペースト(プット):
p
– カーソルの後にペーストP
– カーソルの前にペースト
カット&ペースト: 削除(d
)した内容は自動的にレジスタに保存されるので、p
でペーストできます。
インサートモードへの切り替えバリエーション
状況に応じた入り方
基本の切り替え:
i
– カーソル位置で挿入(insert)a
– カーソルの後で挿入(append)I
– 行頭で挿入A
– 行末で挿入
新しい行を作って挿入:
o
– 下に新しい行を作って挿入O
– 上に新しい行を作って挿入
置換しながら挿入:
r
– 1文字置換(replace)R
– 置換モード(上書きモード)c
– 削除して挿入(change)
検索と置換 – ノーマルモードから実行
検索コマンド
基本の検索:
/検索語
– 前方検索?検索語
– 後方検索n
– 次の検索結果へN
– 前の検索結果へ*
– カーソル位置の単語を前方検索#
– カーソル位置の単語を後方検索
置換コマンド
基本の置換:
:%s/old/new/g " ファイル全体で置換
:s/old/new/g " 現在行で置換
:10,20s/old/new/g " 10-20行で置換
便利なオプション:
c
– 確認しながら置換i
– 大文字小文字を無視
アンドゥとリドゥ – 間違えても大丈夫
取り消しと やり直し
基本コマンド:
u
– アンドゥ(取り消し)Ctrl + r
– リドゥ(やり直し)U
– 行全体を元に戻す
Vimは非常に強力なアンドゥ機能を持っていて、過去の変更履歴をツリー構造で管理しています。
ビジュアルモードとの連携
範囲選択してから操作
ビジュアルモードへの切り替え:
v
– 文字単位の選択V
– 行単位の選択Ctrl + v
– 矩形選択(ブロック選択)
選択後の操作:
d
– 選択範囲を削除y
– 選択範囲をコピーc
– 選択範囲を削除して挿入モード>
– インデント追加<
– インデント削除
高度なノーマルモードコマンド

テキストオブジェクト
便利な範囲指定:
diw
– 単語を削除(delete inner word)ciw
– 単語を変更(change inner word)di"
– ダブルクォート内を削除ci(
– 括弧内を変更da{
– 中括弧を含めて削除
「inner」は中身だけ、「a」は区切り文字も含みます。
マクロ記録
操作の自動化:
q{レジスタ}
– 記録開始(例:qa
)- 操作を実行
q
– 記録終了@{レジスタ}
– マクロ実行(例:@a
)@@
– 直前のマクロを再実行
マーク機能
位置を記憶:
m{文字}
– 現在位置をマーク(例:ma
)'{文字}
– マークした行へジャンプ`{文字}
– マークした位置へジャンプ
効率的な組み合わせ技
よく使うコンボ
行の複製:
yyp " 現在行をコピーして下にペースト
行の入れ替え:
ddp " 現在行を削除して下にペースト(結果的に入れ替え)
単語の置換:
ciw " 単語を削除して挿入モードへ
行末までの削除:
D " d$の省略形
設定でノーマルモードを快適に
おすすめの.vimrc設定
" 相対行番号を表示(移動が楽になる)
set relativenumber
" 検索結果をハイライト
set hlsearch
" インクリメンタルサーチ
set incsearch
" jjでノーマルモードへ(ESCの代替)
inoremap jj <ESC>
" ノーマルモードでもEnterで改行
nnoremap <CR> o<ESC>
よくあるトラブルと対処法
Q: 文字が入力できない
A: ノーマルモードになっています。i
を押してインサートモードへ。
Q: 保存方法が分からない
A: ノーマルモードで:w
(保存)、:q
(終了)、:wq
(保存して終了)。
Q: コピペが外部アプリと連携しない
A: システムクリップボードを使う:
"+y
– システムクリップボードへコピー"+p
– システムクリップボードからペースト
練習方法とリソース
段階的な学習法
初級(1週間):
- hjklでの移動をマスター
- 基本的な削除とコピペ
- モード切り替え
中級(2週間目):
- 単語・行単位の移動
- テキストオブジェクト
- 検索と置換
上級(3週間目以降):
- マクロ記録
- マーク機能
- カスタマイズ
おすすめ練習ツール
vimtutor: ターミナルでvimtutor
と入力すると、インタラクティブなチュートリアルが始まります。
Vim Adventures: ゲーム形式でVimコマンドを学べるWebサイト。
まとめ – ノーマルモードはVimの心臓部
ノーマルモード、最初は違和感がありますが、慣れると手放せなくなります!
今日学んだポイント:
✅ ノーマルモードは「操作」のためのモード
✅ hjklで方向キーを使わない移動
✅ 削除・コピー・ペーストもノーマルモードで
✅ テキストオブジェクトで効率的な編集
✅ モード間の切り替えを意識的に行う
習得のコツ:
- 最初は遅くても構わない
- マウスを封印する
- 毎日少しずつ新しいコマンドを覚える
- よく使う操作から優先的に
Vimのノーマルモードは、「考える速度で編集する」ための最強ツールです。
1ヶ月も使えば、普通のエディタには戻れなくなるでしょう。
Happy Vimming! 🎯
コメント