【问题标题】:Does Visual Studio Code have a key binding resolver?Visual Studio Code 是否有键绑定解析器?
【发布时间】:2016-12-19 02:03:06
【问题描述】:

Atom 编辑器有一个绑定到“ctrl-”的命令。这就是所谓的键绑定解析器:

一旦您激活键解析器模式,您随后按下的任何键都会告诉您在所有可能的上下文中绑定了哪些命令,并显示哪个命令/上下文“胜出”。然后按 ctrl-g 关闭模式。

当您想知道某个键绑定是否空闲,或者某个键绑定没有按照您的预期执行时,这很有用。

这是我在编辑器上下文中按 ctrl-n 时的示例输出,其中我可以看到 emacs 键绑定“下一行”优先:

Emacs 的 ctrl-h k(帮助键)命令也有类似的功能。

是的,我通常可以通过浏览 Default Keyboard Shortcutskeybindings.json 来收集我需要的信息,但是如果绑定了一个键,这可能很难做到在很多不同的情况下。

VSCode 中是否有类似的功能?

【问题讨论】:

标签: visual-studio-code


【解决方案1】:

不幸的是,据我所知,目前无法使用扩展 API 来完成。此功能的功能请求可以找到here

Visual Studio Code 按如下方式评估键绑定:

  • 从下到上评估规则。
  • 第一个匹配的规则,包括键和时间,都被接受。
  • 不再处理任何规则。
  • 如果找到规则并设置命令,则执行该命令。

额外的User/keybindings.json 规则在运行时附加到默认规则的底部,从而允许它们覆盖默认规则。

现在,您可以使用 Quick Outline 首选项:打开键盘快捷键检查绑定到特定键的内容。要打开此视图,请在 Mac 上按 ++PCtrl+Shift kbd>+P 在 Windows 和 Linux 上,并寻找这个选项。

从开发速度来看,这可能会在未来几个月内作为扩展或包含在 vscode 中。

【讨论】:

  • 从 1.19 开始,Quick Outline 的名称是否有所不同?我在调色板中找不到该命令。谢谢!
【解决方案2】:

找出键绑定的简单方法是在高级键绑定编辑器中查找它。

转到键盘快捷键(文件 -> 首选项 -> 键盘快捷键或 ctrl + k、ctrl + s)并按“对于高级自定义打开并编辑 keybinding.json(screen shot)

之后,将打开一个 2 个选项卡式窗口,您可以在其中找到(显然使用 ctrl + f)想要的键 (screen shot)

【讨论】:

    【解决方案3】:

    不确定何时添加该功能,但现在在通过Ctrl+K, Ctrl+S 到达的Keyboard Shortcuts 菜单中,您可以单击搜索字段右侧的小键盘图标,或者按Alt+K,到@987654327 @

    vscode 将捕获您输入的键盘命令并为其显示结果,而不必以正确的语法输入键盘命令的文本描述,这几乎类似于keybinding resolver in atom。 p>

    【讨论】:

    • @vt5491 这应该是现在接受的答案。
    【解决方案4】:

    我认为它的功能不太全面,但 VS Code 中的命令 Developer: Toggle Keyboard Shortcuts Troubleshooting 大致相当于此功能。在此处查看这些文档:https://code.visualstudio.com/docs/getstarted/keybindings#_troubleshooting-keybindings

    以下是您将看到的输出类型示例(截至 2021 年 9 月 1 日):

    与 Atom 版本不同,它只显示第一个匹配的条目(根据键绑定优先规则匹配),但至少是一些信息。

    也很难说出所有重要的when 子句。为此,请查看以下文档:https://code.visualstudio.com/api/references/when-clause-contexts#inspect-context-keys-utility(在这种情况下,上下文键是 when 子句)。了解活动的when 子句、确切的组合键,然后查看“键盘快捷键”页面并按相关组合键的优先级对其进行排序,最终应该会提供相同的功能,只是比在 Atom 中获取该信息更麻烦。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 2018-03-18
      • 1970-01-01
      • 2019-02-09
      • 2018-05-29
      • 1970-01-01
      • 2010-09-17
      相关资源
      最近更新 更多