0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

痒いところに手が届くvim正規表現の部分置換

Posted at

はじめに

ゲームWikiを作成するにあたり、以下の様な置換をしたい場面があった。

  • QuickTinking -> Quick_Thinking

要は、英字の小文字と大文字の間に半角スペースを入れたいんだが、これが意外と検索し辛くてこづった。
同じ轍を踏まない様に、以下に記しておく。

結論

今回のケースでは、以下のコマンドを打てば良い。

:%s/\v(\l)(\u)/\1_\2/gc
  • \v の Very Magic により正規表現をエスケープ不要で記載できる。
  • 小文字を \l, 大文字を \u で指定する。
  • 小文字と大文字の間に半角ススペースで挟むため、() で囲んだ箇所を \1, \2 で割り振る。

以下、段階的に解説していく。

解説

\v (Very Magic)

vim で正規表現を書くと、 \(abc|)\+ の様に、都度エスケープ文字が必要で可読性が大きく損なわれる問題がある。

vimでは、正規表現の頭に \v を追記することで (abc)+ の様に従来の正規表現の書き方ができる。

常に適用したい場合は、 .vimrc に nmap / /\v を記載すると常に / 検索で \v が適用される。

大文字と小文字の区別

小文字は \l, 大文字は \u で指定できる。

部分置換の方法

一部分だけを置換したい場合、 ()(ホールドバッファ)を指定した上で、 \1 - \9 で呼び出すことができる。

参考記事

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?