🐥
マッチする単語の行末に文字を追加する
やりたいこと
-
shift + #でマッチした単語を検索 - マッチした単語の行末に文字を追加
備忘録として残します。
TL;DR
shift + #で単語検索した状態で以下を実行(行末にhogeを追加する例)
:g/<C-r><C-w>/norm Ahoge
簡単な説明
:gについて
globalの略で、指定したパターンにマッチする行に対してコマンドを実行します。
簡単に言えば、 指定したパターンに一致する行を対象に、指定したコマンドを実行する ということです。
:g/pattern/command
<C-r><C-w>について
<C-r><C-w>は、カーソル位置の単語を挿入します。
この場合 shift + # で検索した状態であるため、カーソル上は検索した単語になります。
normについて
normalの略で、ノーマルモードで後列のコマンドを実行することが可能です。
ノーマルモードでA(shift + A)を実行すると、行末にカーソルが移動して挿入モードになります。
つまり、norm Ahogeで行末にhogeを追加することができます。
全て組み合わせると...
-
:g:全ての行に対して -
<C-r><C-w>:マッチするパターンとして検索した単語を挿入し -
norm Ahoge:マッチした単語の行末にノーマルモードでhogeを挿入する
ということになります。とても便利ですね。
追加
-
shift + #でマッチした単語を検索 - マッチした単語の特定文字を取得
- 上記特定文字を別の文字に変換
この方が汎用性が高いかもしれません。
normを使用するパターンと異なり、単にパターンマッチのs/.../.../gを使用するだけです。
:g/<C-r><C-w>/s/hoge/fuga/g
<C-r><C-w>でマッチした単語の行に対して、hogeをfugaに置換します。
とても簡単ですね。
owari
つよつよvimmerになりたい。
Discussion