🐥
マッチする単語の行末に文字を追加する
やりたいこと
-
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