この記事は釧路高専プログラミング研究部 Advent Calendar 2024の参加記事です
はじめに
突然ですが皆さんVimを知っていますか?Vimはテキストエディタの一種で、リリースから30年以上たった今でも根強い人気があります。私はもともと自分のPCでプログラムを書く際にVSCodeを使っていましたが、学校のC言語の授業ではVimを使うことが強制され、それがきっかけでVimのキーバインドの便利さに目覚めました。が、自分のWindowsにわざわざVimを入れるのはめんどくさかったので、VSCodeでVimの操作をすることにしました。その方法やVSCodeでのVimのカスタマイズ方法を紹介していきます。
VSCodeにVimの拡張機能を入れよう
VSCode Vimという拡張機能を入れることで、VSCode内でVimのキーバインドを利用することができるようになります。下の画像のように左のバーから拡張機能を選択し、そこの検索窓でVimと検索することでVimの拡張機能を手に入れることができます。
基本的な操作方法
通常のVimと大体同じです。基本的にはhjklでカーソルを操作し、iキーなどで挿入モードに入ってから文字を打ち、ノーマルモードに戻ってキーの操作をするということの繰り返しです。わざわざモードを切り替えないと文字が打てないのは一見不便に感じるかもしれませんが、ノーマルモードでのキー操作でカーソルを動かすことで、キーボードのホームポジションからあまり動くことなく効率的にカーソルを操作することができます。vimの細かい操作方法についてはここでは触れませんので、気になる方はググってください。
ちょっとカスタマイズ
Vimの特徴の一つにカスタマイズ性の高さがあげられます。Vimはvimscriptと呼ばれるスクリプト言語を書くことで機能を独自にカスタマイズできます。VSCode Vimの場合vimscriptで設定を書かずに(一応でvimscriptも使えるみたいです)、settings.jsonと呼ばれるjson形式のVSCodeの設定ファイルに設定を書くことで自由にカスタマイズすることができます。ここでは一部をかいつまんで紹介しますがより詳しく知りたい場合はこちらをご覧ください(英語です)。
settings.jsonの開き方
とりあえず設定を書くためにsettings.jsonを開いてみましょう。
1.コマンドパレットを開く
Ctrl+Shift+Pでコマンドパレットを起動することができます。また上の検索窓に>を入力することでも同じくコマンドパレットが開きます。
2.検索窓にsettings.jsonと入力
settings.jsonと入力すると検索候補の欄にユーザー設定を開く(JSON)というものが出てきますのでそちらをクリックするとsettins.jsonが開きます。
キーバインドを変更する
VSCode Vimでは通常のVimと同じくモードごとにキーバインドを変更することができます。例えば、インサートモード時にjjと打ったらEscキーが打たれたことになってノーマルモードに戻るなどといったことが可能になります。
"vim.insertModeKeyBindings": [
{
"before": [
"j",
"j"
],
"after": [
"<Esc>"
]
}
],
上記のコードをsettings.jsonに書き込むことで、インサートモード時にjjと打つことでEscが作動し、ノーマルモードに戻ることができます。beforeの部分に設定したいキーを入力し、afterの部分にその時に実行したいキーを入力する形です。また一つのモードに複数のキーバインドを設定する際にはモードごとに続けて書くことができます。
"vim.normalModeKeyBindings": [
{
"before":["<C-t>"],
"commands":[":tabnew"]
},
{
"before":["<Esc><Esc>"],
"commands":[":nohl"]
}
],
この場合はノーマルモードの時にC-tを押すことで新たなタブを開くのと、Escを二回連続で押すと検索したハイライトを全てリセットするということになります。"before"の部分は先ほどインサートモードの設定をした時と文法が変わりませんが、その後の"after"だった部分が"commands"に代わっています。:tabnewや:nohlなどのコマンドラインモードでのコマンドをキーバインドに設定したい場合はcommandsで指定してあげる必要があるのです。