Вот что у меня сработало:
VSCode 1.37.1 (июль 2019 г.)
VSCodeVim v1.9
Сначала укажите расширение VSCodeVim до unhandle C-a
и C-e
.Это делегирует эти управляющие ключи VSCode вместо расширения:
// In your settings.json
"vim.handleKeys": {
"<C-a>": false,
"<C-e>": false
},
Теперь просто переназначьте эти ключи в VSCode:
// In your keybindings.json
[
{
"key": "ctrl+a", // default is Home
"command": "cursorHome",
"when": "textInputFocus"
},
{
"key": "ctrl+e", // default is End
"command": "cursorEnd",
"when": "textInputFocus"
},
{
"key": "ctrl+a", // default is Home
"command": "extension.vim_home",
"when": "editorTextFocus && vim.active && !inDebugRepl && vim.mode != 'Insert'"
},
{
"key": "ctrl+e", // default is End
"command": "extension.vim_end",
"when": "editorTextFocus && vim.active && !inDebugRepl && vim.mode != 'Insert'"
},
]
Я обнаружил, что первые две привязки работают нормально ирежим вставки, но не в визуальном режиме (он как бы перемещает курсор, но ничего не выделяется).Последние два гарантируют, что он также работает в визуальном режиме.
Редактировать: Я обнаружил, что простое удаление последнего условия vim.mode != 'Insert'
в when
работает и намного чище.Поэтому вместо сочетаний клавиш, приведенных выше, просто:
// In your keybindings.json
[
{
"key": "ctrl+a",
"command": "extension.vim_home",
"when": "editorTextFocus && vim.active && !inDebugRepl"
},
{
"key": "ctrl+e",
"command": "extension.vim_end",
"when": "editorTextFocus && vim.active && !inDebugRepl"
},
]