🐥

マッチする単語の行末に文字を追加する

2024/11/14に公開

やりたいこと

  1. shift + #でマッチした単語を検索
  2. マッチした単語の行末に文字を追加

備忘録として残します。

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を挿入する

ということになります。とても便利ですね。

追加

  1. shift + #でマッチした単語を検索
  2. マッチした単語の特定文字を取得
  3. 上記特定文字を別の文字に変換

この方が汎用性が高いかもしれません。

normを使用するパターンと異なり、単にパターンマッチのs/.../.../gを使用するだけです。

:g/<C-r><C-w>/s/hoge/fuga/g

<C-r><C-w>でマッチした単語の行に対して、hogefugaに置換します。

とても簡単ですね。

owari

つよつよvimmerになりたい。

Discussion