Vimの検索と置換 — /, ?, :s, :%s コマンド
Vimでのテキスト検索と置換の完全ガイド。前方/後方検索、カーソル下の単語検索、置換コマンド、グローバル置換、確認モードをカバー。
Search/Replace
詳細な説明
Vimでの検索
基本的な検索
| コマンド | アクション |
|---|---|
/{pattern} |
パターンを前方検索 |
?{pattern} |
パターンを後方検索 |
n |
次のマッチに移動(同じ方向) |
N |
前のマッチに移動(逆方向) |
* |
カーソル下の単語を前方検索 |
# |
カーソル下の単語を後方検索 |
検索オプション
| 設定 | 効果 |
|---|---|
:set ignorecase |
大文字小文字を区別しない検索 |
:set smartcase |
パターンに大文字がある場合のみ大文字小文字を区別 |
:set hlsearch |
すべてのマッチをハイライト |
:set incsearch |
入力中にマッチを表示 |
:noh |
検索ハイライトをクリア |
置換(Replace)コマンド
置換コマンドは以下のパターンに従います:
:[range]s/{pattern}/{replacement}/[flags]
一般的な置換パターン
| コマンド | スコープ |
|---|---|
:s/old/new/ |
現在行の最初の出現 |
:s/old/new/g |
現在行のすべての出現 |
:%s/old/new/g |
ファイル全体のすべての出現 |
:%s/old/new/gc |
すべての出現を確認付きで |
:5,20s/old/new/g |
5行目から20行目 |
:'<,'>s/old/new/g |
Visual選択範囲内 |
便利なフラグ
| フラグ | 意味 |
|---|---|
g |
グローバル(行の最初だけでなくすべてのマッチ) |
c |
各置換を確認 |
i |
大文字小文字を区別しない |
I |
大文字小文字を区別する |
n |
置換せずにマッチ数をカウント |
応用:キャプチャグループの使用
:%s/\(\w\+\) \(\w\+\)/\2 \1/g
これはスペースで区切られた2つの単語をキャプチャグループ \1 と \2 を使って入れ替えます。
ユースケース
ファイル内のテキストパターンを見つけ、オプションとして各マッチの手動確認付きまたはグローバルに置換する必要がある場合。