この記事では、Vimでプラグインを使わずに「文字列を確認してから置換する」ためのコマンドについて、ご紹介します。
[解答] :%s/{置換対象文字列}/{置換後文字列}/c
Vimコマンド1. 1文字だけ置換
(ノーマルモード) :%s/{置換対象文字列}/{置換後文字列}/c
置換対象の文字列を1つだけ、確認してから置換できます。
Vimコマンド2. 全ての文字列を置換
(ノーマルモード) :%s/{置換対象文字列}/{置換後文字列}/gc
置換対象の文字列をすべて、確認してから置換できます。
ヘルプによれば、下記が正式なコマンドの式になります。
:[range]s[ubstitute]/{pattern}/{string}/[flags] [count] [range] の各行で {pattern} のマッチを {string} に置き換える。
{pattern}についてはpatternを参照すること。
{string} は普通の文字列でもよいし、特別な指定方法を使ってもよい。sub-replace-special を参照。 [range] と [count] が指定されないと、現在行内でのみ置換を行う。[count] が指定されると、[range] の最終行から数えて [count] 行で置換を行う。[range] が指定されないと、現在行から開始する。
E939 [count] は正の数でなければならない。cmdline-rangesも参照。 change – Vim日本語ドキュメント https://vim-jp.org/vimdoc-ja/change.html#:substitute
このうち、「置換対象文字列{pattern}」は、下記のような正規表現に近い指定をすることで、指定した単語を検索することができます。
<{文字列} (指定した文字列で始まる単語を検索する) {単語}\> ( 指定した文字列で終わる単語を検索する) \<{単語}\> (文字列で指定した単語を検索する) \<.....\> (5文字の単語を検索する)
詳しくは、この指定するパターン{pattern}については、下記が正式なマニュアルになります。
pattern - Vim日本語ドキュメント
下記のフラグ{flag}を活用しています。
c 置換前に毎回確認する。
なお、フラグ{flag}について、下記は覚えておくのがオススメです。
g 行中の全てのマッチを置換する。 i パターンの大文字/小文字の区別をしない。 I パターンの大文字/小文字を区別する。
例えば、すべての「vim」という文字列を「Vim Replace Test」に、確認しながら置換するコマンドはこちらです。
:%s/vim/Vim Replace Test/cg
このVimコマンドの補足情報
- 利用頻度
- 便利さ
- 覚え易さ
関連するVimヘルプ
Vimからは、下記のコマンドでヘルプを確認できます。
:help substitute :help su
ヘルプで検索するときは、通常は大文字小文字は識別されませんので、どちらでも構いません。
参考書籍
こちらの書籍が参考になります。
Vim/neovim関連の書籍で、もっとも評判が良くてバイブルと呼んでる人もいる一冊です。Vim/neovimのバージョンに依存しない沢山のTips形式で、その表題通りに「思考のスピードで編集」できるようになるノウハウが詰まっています。その高い評価は Amazon のレビューからも分かる通りです。Vimmer なら必ず一度は読んでおいて間違いありません。
こちらもVim関連の書籍で評価が高い書籍の一冊です。vim-jpで見かける上級Vimmer(Vimサポーターズ)の皆様による、Vimを実践で使ったノウハウからプラグイン関連の情報が詰まっています。日本の Vim界隈を知る上でも是非一読しておきたい一冊です。
Vim/neovim の設定ファイルやプラグインなど、Vim script に関するノウハウがいくつも詰まった一冊です。日本で Vim Script をここまで深く解説している唯一の書籍と言えます。Vim力を伸ばしたいと考えるなら、絶対に避けては通れない書籍でしょう。