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!

Другие вопросы по тегам