☺️

VSCodeの置き換え機能の秘めたる力

2021/09/04に公開

秘めたる力?

VSCodeを使っていて最近まで知らなかった機能で結構便利だと思ったのが、置き換え時に変数をつかえることです。例えば、以下のようなCSVがあったとします。(データは気象庁から取得した2000年から2020年までの東京の月別平均気温です)

東京
年月,平均気温(℃),品質情報,均質番号
2000/1,7.6,8,1
2000/2,6.0,8,1
2000/3,9.4,8,1
2000/4,14.5,8,1
2000/5,19.8,8,1
2000/6,22.5,8,1
2000/7,27.7,8,1
...
2020/10,17.5,8,2
2020/11,14.0,8,2
2020/12,7.7,8,2

このようなCSVをVSCodeの置き換え機能一発で以下のようにできます。

東京
年月,平均気温(℃),品質情報,均質番号
2000年1月の平均気温は7.6℃
2000年2月の平均気温は6.0℃
2000年3月の平均気温は9.4℃
2000年4月の平均気温は14.5℃
2000年5月の平均気温は19.8℃
2000年6月の平均気温は22.5℃
2000年7月の平均気温は27.7℃
...
2020年10月の平均気温は17.5℃
2020年11月の平均気温は14.0℃
2020年12月の平均気温は7.7℃

やり方

やり方は簡単です。
VSCodeを起動して、検索・置き換えウィンドウを出し正規表現を使用できるようにします。
正規表現を使用できるようにするには下記画像の結果はありませんと出ている左側のボタンを押してください。

そして置き換え元となる文字列を選択し、CTRL+Fを押します。(これで該当文字列の正規表現が下記画像のように検索フォームに入力されます)

あとは下記画像のように、変数に格納したい部分を ()で囲います。(カッコの中を正規表現で書けばマッチしたものを変数に入れます)
置き換えフォームに、置き換え後の文字列を記入します。
このとき変数を展開するには $数字 で展開できます。
数字の部分は検索フォームで () で囲んだ左側から1、2、3・・・と続きます。

これで置き換えを実行すると、置き換えフォームに記入した文字列が変数展開された状態で置き換わっていきます。

おわりに

今回は、VSCodeの置き換え機能の変数について書きました。
自分はこの機能をPHPUnit用のテストフィクスチャをGo用に置き換えるときに使用しました。
変換用のコード書くまででもないけど手作業で1つ1つやっていくのはきつかったので非常に助かりました。
あんまり使いどころなくね?と思われるかもしれないですが、この記事を読んで取れる選択肢の1つとして将来誰かの手助けになることを祈ります。

Discussion