◾️はじめに
vim で、置換・変換するTipsを徐々にまとめていく
目次
【0】ポイント 【1】置換を利用して囲み文字を入れる 【2】特定パターン時にマスクする 【3】大文字⇔小文字変換 1)大文字 ⇒ 小文字 2)小文字 ⇒ 大文字
【0】ポイント
* 以下のような形で置換していけばいいが、 ChatGPTに質問しながらやればできてしまう
基本形
:%s/【置換前】/【置換前】/g
【1】置換を利用して囲み文字を入れる
1)対応例
# 全置換 :%s/\(\w\+\)/"\1"/gc # 全置換(確認無し) :%s/\(\w\+\)/"\1"/g
https://github.com/clear-code/ClearCode.vim/issues/7
2)解説
:%s/置換前/置換後/gc % : ファイル全体を対象とする s : 置換する g : 行にある全てのマッチした文字列を置換する (c : マッチした文字列を1つずつ確認しながら置換する)
3)サンプル
# 実行前(コピーしてVIMに張り付ける) table3 table1 table2 table1 table3 table2 table1 table4 table2 # 実行後 "table1" "table1" "table1" "table2" "table2" "table2" "table3" "table3" "table4"
【2】特定パターン時にマスクする
デバッグに役立つkubectlコマンド ~ kubectl get/describe/api-resources ~
https://dk521123.hatenablog.com/entry/2025/03/21/151944
の「例2:オブジェクトの詳細情報」で以下のようにマスクしたい
置換前
SecretName: demo-secret # demo-secretは可変
置換後
SecretName: *****
1)対応例
:%s/\(.*\)SecretName:\s\+\S\+/\1SecretName: *****/g
2)解説
* \(.*\) は行の先頭から SecretName: までの任意の文字列をキャプチャ * SecretName: はそのままの文字列を検索します。 * \s\+ は、1回以上の空白文字(スペースやタブ)にマッチ * \S\+ は、1回以上の非空白文字(アルファベットや数字など)にマッチ => これが実際に置換対象となる「可変な部分(demo-secret)」 * \1 は最初にキャプチャした部分(SecretName: より前の文字列)を再利用
【3】大文字⇔小文字変換
https://linuxfan.info/vim-upper-lower
1)大文字 ⇒ 小文字
* 大文字に変換したい場合は、「U」(Shiftキーを押しながらUキー)
2)小文字 ⇒ 大文字
* 大文字に変換したい場合は、「u」(何も押さずにuキー)
関連記事
VIM ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2016/09/15/233623
VIM ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/09/01/000000
VIM ~ あれこれ編 ~
https://dk521123.hatenablog.com/entry/2023/08/04/225503
VIM ~ VimGolf ~
https://dk521123.hatenablog.com/entry/2023/06/09/000000
VI エディタ
https://dk521123.hatenablog.com/entry/2016/04/27/232800
ネットワーク系コマンド ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2016/07/27/214633
デバッグに役立つkubectlコマンド ~ kubectl get/describe/api-resources ~
https://dk521123.hatenablog.com/entry/2025/03/21/151944
シェル ~ 文字列置換 ~
https://dk521123.hatenablog.com/entry/2023/10/25/000000