この記事では、Vimでプラグインを使わずに「文字列を全て置換する」ためのコマンドについて、ご紹介します。
[解答] :%s/{置換対象文字列}/{置換後文字列}/g
Vimコマンド. 全ての文字列を置換
(ノーマルモード) :%s/{置換対象文字列}/{置換後文字列}/g
置換対象の文字列をすべて、一括置換できます。
ヘルプによれば、下記が正式なコマンドの式になります。
:[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}については、下記が正式なマニュアルになります。
https://vim-jp.org/vimdoc-ja/pattern.html#pattern
下記のフラグ{flag}を活用しています。
g 行中の全てのマッチを置換する。
なお、フラグ{flag}について、下記は覚えておくのがオススメです。
c 置換前に毎回確認する。 i パターンの大文字/小文字の区別をしない。 I パターンの大文字/小文字を区別する。
例えば、すべての「vim」という文字列を「Vim Replace Test」に、確認しながら置換するコマンドはこちらです。
:%s/vim/Vim Replace Test/cg
このVimコマンドの補足情報
- 利用頻度[star rate=4]
- 便利さ[star rate=4]
- 覚え易さ[star rate=2]
関連するVimヘルプ
Vimからは、下記のコマンドでヘルプを確認できます。
:help substitute :help su
ヘルプで検索するときは、通常は大文字小文字は識別されませんので、どちらでも構いません。
参考書籍
こちらの書籍が参考になります。
[temp id=3]