当使用Vim扩展名时,如何在Esc上的VSCode中自动保存文件?

当使用Vim扩展名时,如何在Esc上的VSCode中自动保存文件?,vim,visual-studio-code,autosave,Vim,Visual Studio Code,Autosave,我想知道,在Vim中退出插入模式后,如何通过按Esc键将当前文件自动保存在VSCode中?您可以向设置中的Esc键添加insertModeKeyBinding。json如下: "vim.insertModeKeyBindingsNonRecursive": [ { "before": ["<Esc>"], "after": ["<Esc>", ":", "w", "<Enter>"] } ] 将替换为:w是可行

我想知道,在Vim中退出插入模式后,如何通过按
Esc
键将当前文件自动保存在VSCode中?

您可以向
设置中的
Esc
键添加
insertModeKeyBinding
。json
如下:

"vim.insertModeKeyBindingsNonRecursive": [
    {
        "before": ["<Esc>"],
        "after": ["<Esc>", ":", "w", "<Enter>"]
    }
]
替换为
:w
是可行的,但这可能是一个稍微优雅的解决方案(例如,如果您有其他要运行的save命令)

“vim.InsertModeKeyBindings非递归”:[
{
“之前”:[
""
],
“之后”:[
""
],
“命令”:[
“workbench.action.files.save”
]
}
],

谢谢您的回答!然而,这似乎不起作用。首先,我必须使用
insertmodekeybindingsnorecursive
,否则
Esc
将完全停止工作。其次,即使使用
insertModeKeyBindingsNonRecursive
,它也不会在
Esc
上保存文件。我在自己的一端对它进行了测试,它的工作原理与我预期的一样(在插入模式下,点击Esc:将插入模式保留为正常模式并保存文件)。你能详细说明一下它是如何不适合你的吗?虽然您对非递归的看法是正确的-实际上我自己也使用了非递归,只是没有粘贴正确的。在插入模式下最后一次按键后,您需要等待约2秒钟,然后按
Esc
。在插入模式下绑定
Esc
似乎就是这样。谢谢!这似乎现在起作用了。等待~2有点不可信,但我想它应该在Vim插件中单独发布。作为一个附带问题,我如何设置
“vim.leader”:“
将把leader设置为
空格
,因此
空格+Esc
将是“离开插入模式并保存”。我认为您不能将leader设置为
Meta
-key。谢谢!我会试试:)你可以在VSCode中打开自动保存<代码>文件>切换自动保存
@Rohmer感谢您的评论!我不久前尝试过这个选项,但它并没有像我希望的那样顺畅。我在相应的GitHub问题下详细描述了我的工作流程:没问题!我发现这个问题的原因是VSCode/VSCodeVim在插入模式下,每次输入字符时都过度保存。也许自从你发帖后有些事情已经改变了。
"vim.insertModeKeyBindingsNonRecursive": [
    {
        "before": ["<leader>", "<Esc>"],
        "after": ["<Esc>", ":", "w", "<Enter>"]
    }
]
    "vim.insertModeKeyBindingsNonRecursive": [
    {
        "before": [
            "<Esc>"
        ],
        "after": [
            "<Esc>"
        ],
        "commands": [
            "workbench.action.files.save"
        ]
    }
],