VSCode + VSCodeVim отменяет привязку ключей
VSCodeVim использует другой стек отмены, и меня раздражает, когда после отмены всех несохраненных изменений в стеке отмен vim VSCode по-прежнему показывает, что файл не сохранен. По этой причине я хотел бы использовать стек отмены VSCode и отобразить "u" на "Ctrl+z". Мое связывание клавиш следующее:
{ "key": "u", "command": "undo", "when": "editorTextFocus && !editorReadonly && vim.active && vim.mode != 'Insert'" }
Проблема в том, что, хотя я и указал, что он не должен работать, когда в vim включен режим Insert, он все равно отменяет последнее изменение и вставляет 'u'. Может кто-нибудь предложить, как правильно отменить отмену?
2 ответа
Я попробовал предложение доктора ОСвальдо, но по какой-то причине оно не работает. Однако мне удалось найти решение:
"vim.otherModesKeyBindingsNonRecursive": [
{
"before": ["u"],
"after": [],
"commands": [
{
"command": "undo",
"args": []
}
]
}
]
У меня нет 50 репутации, поэтому я не могу комментировать в ответ на @dtasev, но для совмещения их комментария (и, чтобы быть явным с JSON), это то, что я поместил в свой settings.json, используя
vim.normalModeKeyBindingsNonRecursive
в отличие от
vim.normalModeKeyBindings
:
"vim.normalModeKeyBindingsNonRecursive": [
{
"before": ["u"],
"after": [],
"commands": [
{
"command": "undo",
"args": []
}
]
},
{
"before": ["<C-r>"],
"after": [],
"commands": [
{
"command": "redo",
"args": []
}
]
}
]
Спасибо @Nikita Karpinsky и @dtasev!