Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Vimでキャプチャを利用して置換をする例など

$
0
0

下のファイルを例にして、いくつかの書いてみます。
すべてノーマルVimで利用できます。

変更前
スクリーンショット 2015-01-26 1.37.08.png

1.英単語の先頭に _ (アンダースコア) をつけたいとき

変更後
スクリーンショット 2015-01-26 1.40.10.png

このケースでは 最初の正規表現にマッチした部分 = キャプチャしたい部分なので、検索部分で ()を利用しなくても \0でマッチ全体を参照できます。

:%s/[a-zA-Z]\+/_\0/g

[a-zA-Z]は文字クラス \aを利用できるので以下のようにも書けます。 (※ 文字クラスについては :h /character-classesで詳しい情報を参照できます。)

:%s/\a\+\/_\0/g

また、\0&でもよいです。

:%s/\a\+/_&/g

上記の3つの方法はすべて同じ結果を得ることができます。

2.各単語の先頭の文字を大文字にしたいとき

上記と同じファイルで各単語の先頭の文字だけ大文字にしたい場合。
1で利用したもの(\v, \a, &) に加えて \uを使います。
\uはその次にくる文字を大文字に変更する特殊文字です。\lだとその逆(小文字)ができます。

:%s/\v\a+/\u&/g

動作
1

3.各単語の先頭の文字だけ大文字にして、後に続く文字は小文字にしたいとき

:%s/\v\a+/\u\L&/g

動作 (POSIXの文字に注目してください)
2

2,3で書いた \u\Lの説明や他にも利用できる物などは
:h sub-replace-specialを見てみてください。

あとがき

今回はパターンマッチが簡単なものでしたが、
複雑なパターンマッチ書くときはエスケープのバックスラッシュだらけになってややこしくなってくるので、
\vでパターンスイッチ してしまう事も多いです。

Vimは便利な上に楽しいですね。


Viewing all articles
Browse latest Browse all 5608

Trending Articles