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"
]
}
],
このエントリは随時加筆しています。