VS CodeのVimプラグインには、settings.jsonという設定ファイルがあり、プラグインの設定をそこに記述します。また、ctrl+,キーで表示されるGUIからvimを検索し、各項目を設定することもできます。
Contents
設定やり方の概要
setting.json で 設定する
エディタ内の振る舞いを設定するには、settings.jsonファイルにvimプラグインに設定を追加します。ただしCtrl+alt+oのような3つ以上の複合キーバインドはvimプラグインでは設定できないので、そういう場合は後述のkeybinding.jsonに設定を追加することで解決できます。
以下のような記述を追加します。
"vim.normalModeKeyBindingsNonRecursive": [
{
"before": ["j", "j"],
"commands": [
"workbench.action.navigateDown",
"workbench.action.navigateDown"
]
},
{
"before": ["k", "k"],
"commands": [
"workbench.action.navigateUp",
"workbench.action.navigateUp"
]
}
],
この例では、jを2回押すことで下に移動し、kを2回押すことで上に移動するように設定しています。このように、beforeに押されたキーの配列、commandsに実行されるコマンドの配列を指定します。commandsには、VS
Codeのコマンドを指定することができます。
commands以外にもafterを指定して、キーの割り当てを置換することができます。以下はインサートモードで ctrl+hを<left>に割り当てる設定です。Ctrl+hは<C-h>と記述することに注意してください
"vim.insertModeKeyBidnings": [
// Assign Ctrl+h to Cursor Left in Insert mode
{
"before": ["<C-h>"],
"after": ["<left>"]
}
]
また、設定画面のGUIからキーバインドを設定する場合は、ctrl+,キーで表示される設定画面からvimを検索し、vim.normalModeKeyBindingsNonRecursiveを設定してください。
vim.commandLineModeKeyBindingsを設定するには、以下のような記述をsettings.jsonに追加します。
"vim.commandLineModeKeyBindings": [
{
"before": [":"],
"commands": [
"workbench.action.terminal.openNativeConsole",
"workbench.action.terminal.selectAll",
"workbench.action.terminal.copySelection",
"workbench.action.terminal.clearSelection"
]
}
]
この例では、:を押すことでターミナルを開き、選択したテキストをコピーすることができます。commandsには、VS
Codeのコマンドを指定することができます。
beforeには、:などのコマンドラインモードに入るキーを指定します。
GUIからキーバインドを設定する場合は、ctrl+,キーで表示されるGUIからvim.commandLineModeKeyBindingsを設定してください。
コマンド名の調べ方
commandsに指定するコマンドは、以下の方法で調べることができます。
- メニューバーから
File > Preferences > Keyboard Shortcutsを開きます。 - 検索バーにコマンド名を入力します。
- コマンドが表示されるので、そのままコピーして
commandsに貼り付けます。
また、コマンド名にはworkbench.やeditor.などのプレフィックスがつく場合があるので、必要に応じて指定してください。
keybinding.jsonで設定する
エディタ以外部分のvscodeの振る舞いを設定するには keybinding.json を編集します。
keybinding.jsonは、キーバインドを設定するためのファイルです。ここで設定されたキーバインドは、VS
Code全体で有効になります。以下はkeybinding.jsonを使用して、ctrl+shift+alt+oを押すことで、ターミナルを開く設定の例です。
[
{
"key": "ctrl+shift+alt+o",
"command": "workbench.action.terminal.toggleTerminal"
}
]
keyには、キーバインドを指定します。commandには、実行されるコマンドを指定します。コマンドは、commandsに指定するコマンドと同様に、メニューバーから調べることができます。
VS CodeのGUIからキーバインドを設定する場合は、ctrl+,キーで表示する設定画面からkeybindingsを検索し、keybindings.jsonを編集してください。
keybinding.jsonの場所は、OSによって異なります。Windowsでは、C:\\Users\\[ユーザー名]\\AppData\\Roaming\\Code\\Userにあります。macOSでは、~/Library/Application Support/Code/Userにあります。Linuxでは、~/.config/Code/Userにあります。
vscodeをvim風に操作する設定
以下は個人的な設定の一部です。
ctrl+w で ファイル閉じるを無効化する
keybinding.jsonに記述します
{
"key": "ctrl+w",
"command": "-workbench.action.closeActiveEditor"
}
QuickOpenのセレクタの上下操作をvim風にする
QuickOpenとはctrl+p, ctrl+shift+pで開くウィンドウのことです。keybinding.jsonに記述します。
{
"key": "ctrl+j",
"command": "workbench.action.quickOpenSelectNext",
"when": "inQuickOpen"
},
{
"key": "ctrl+k",
"command": "workbench.action.quickOpenSelectPrevious",
"when": "inQuickOpen"
},
編集中にでるサジェストのセレクタの上下操作をvim風にする
keybinding.jsonに記述します。
{
"key": "ctrl+j",
"command": "selectNextSuggestion",
"when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible&& textInputFocus"
},
{
"key": "ctrl+k",
"command": "selectPrevSuggestion",
"when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible&& textInputFocus"
},
エディタのタブグループを閉じる
setting.jsonに記述します。ノーマルモード時に:tabcと入力することでカレントのタブグループを閉じます
"vim.normalModeKeyBindingsNonRecursive": [
{
"before": [
":",
"t",
"a",
"b",
"c",
],
"commands": [
"workbench.action.closeEditorsInGroup"
]
}
],
このエントリは随時加筆しています。

