vscodevim使用不同的撤消堆栈,当撤消VIM撤消堆栈中的所有未保存更改后,它会使我感到烦恼,VSCODE仍然表明该文件未保存。因此,我想将VSCODE的撤消堆栈和映射为" Ctrl Z"。我的钥匙限制如下:
{ "key": "u", "command": "undo", "when": "editorTextFocus && !editorReadonly && vim.active && vim.mode != 'Insert'" }
问题在于,即使我指定它在插入VIM模式时不应工作,但它仍然会消除最后一个更改并插入" U"。谁能建议重新启动的正确方法是什么?
我尝试了Doktor Oswaldo的建议,但由于某种原因,它行不通。但是我设法找到了一个解决方案:
"vim.otherModesKeyBindingsNonRecursive": [
{
"before": ["u"],
"after": [],
"commands": [
{
"command": "undo",
"args": []
}
]
}
]
to dtasev的评论
...似乎不需要
"args": []
,并且"otherModesKeyBindingsNonRecursive"
不再存在作为选项。我将我的normalModeKeyBindings
绑定到。还将<C-r>
绑定到redo
,以使用VSCODE的重做堆栈
在此答案上(要与JSON明确说明),这是我在设置中放置的。JSON使用vim.normalModeKeyBindingsNonRecursive
而不是vim.normalModeKeyBindings
:
"vim.normalModeKeyBindingsNonRecursive": [
{
"before": ["u"],
"after": [],
"commands": [
{
"command": "undo",
"args": []
}
]
},
{
"before": ["<C-r>"],
"after": [],
"commands": [
{
"command": "redo",
"args": []
}
]
}
]