やりたいこと
- 正規表現にマッチした部分の文字列のみを対象に、アルファベットの大文字小文字を変換したい
- vimでやりたい
例
- こんな文字列があったとする
Vim\u3063\u3066\u6700\u9AD8\u3067\u3059\u3088\u306D
- これのUnicodeのアルファベット部分([a-f])だけを小文字にしたい
-
Vim
は変換したくない -
\u
も変換したくない(元々小文字だけど)
-
解決方法
コマンド
- コマンドモードで以下を実行
:%s/\\u\(\w\+\)/\L\0/g
結果
Vim\u3063\u3066\u6700\u9ad8\u3067\u3059\u3088\u306d
ポイント
- 置換後のパターンに
\L
をつけると小文字に変換してくれる。-
\U
だと大文字
-
-
\l
や\u
だと先頭の文字のみをそれぞれ小文字/大文字に変換してくれる -
sed
コマンドと同じなのかな?やったことないけど
this is test text
に対して
:%s/\(\w\+\)/\u\0/g
とすると
This Is Test Text
になる。
余談
-
vim 置換 小文字
とかでぐぐると選択してU
とかShift + U
の話ばかりがヒットして目的のことが調べられなかったが、英語で検索したら一髪で参考記事に辿り着いた- 私のぐぐり力の問題かもしれないが…