Visual Studio Code 扩展中的冲突键绑定

Visual Studio Code 扩展中的冲突键绑定

许多 vscode 扩展都具有一些类似的通用功能,例如预览。因此,它们将此预览映射到合适的键绑定(Ctrl-Shift-V Ctrl-K-V)。但是,如果有多个扩展,这些绑定可能会导致冲突。在我的例子中,是标记、asciidoc、gpx 文件,可能还有 html。

另一方面,最好对相同的功能使用相同的绑定。是否有一些概念'范围'其含义是将绑定限制到特定的扩展名/文件类型上下文,允许在不同的上下文中并行使用相同的键?

答案1

Visual Studio Code 没有快捷方式上下文的概念,除了将它们限制在文本编辑器或其他模块中。

它可以帮助 检测键绑定冲突

使用键盘快捷键编辑器和上下文菜单命令 显示相同的键绑定,它将根据键盘快捷键过滤键绑定以显示冲突。

有人要求改进 查找冲突(重复)键盘快捷键的选项 #33745,但这一请求未被微软接受。

答案2

是的,有when 子句上下文可以应用于键绑定。

键盘快捷键编辑器在“何时”列中显示所有可用键绑定的上下文: 键盘快捷键

扩展程序作者应确保其扩展程序定义的任何键绑定都限制在尽可能最小的上下文中,以帮助最大限度地减少冲突。例如,提供 Markdown 预览的扩展程序应使用如下键绑定:

{
    ...
    "keybindings": [
        {
            "command": "less-annoying-markdown-preview.openPreview",
            "key": "ctrl+shift+v",
            "mac": "cmd+shift+v",
            "when": "editorFocus && editorLangId == markdown"  // <-- this is important!
        },
    ],
    ...
}

如果您发现扩展没有设置正确的上下文,您可以通过提交拉取请求来修复上下文(而不是懒惰并仅仅提出问题来抱怨问题,这会导致开发人员倦怠)。

相关内容