Visual Studio Code有键绑定解析器吗?

25

Atom编辑器有一个命令绑定到'ctrl-.',称为键绑定解析器:

enter image description here

一旦你激活了按键解析器模式,随后按下的任何键都会告诉你它绑定的所有可能上下文中的命令,并显示哪个命令/上下文“优胜”。然后通过按ctrl-g来切换该模式。

当你想知道一个键绑定是否可用,或者当你期望的键绑定不起作用时,这非常有用。

以下是我在编辑器上下文中按下ctrl-n时的示例输出,我可以看到emacs的键绑定“next-line”占据了优先地位:

enter image description here

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

是的,我通常可以通过浏览默认的键盘快捷键和keybindings.json来获取所需的信息,但如果一个键在许多不同的上下文中绑定,则这可能很难做到。

在VSCode中是否有类似的功能?


https://stackoverflow.com/questions/47304223/how-can-i-find-what-command-a-keybinding-is-bound-too-easily?noredirect=1#comment81572072_47304223 - tgerdin
嘿,不错的深色和浅色主题!!它是公开的吗?它叫什么名字?谢谢! - Ciprian Tomoiagă
我添加了一个答案来解决这个问题,但我猜测开发人员:切换键盘快捷键故障排除功能是在此问题提出后不久添加的。 - Erdős-Bacon
4个回答

15

很遗憾,据我所知,目前无法使用扩展API完成此操作。有关此功能的特性请求可以在此处找到。

Visual Studio Code的按键绑定如下进行评估:

  • 规则从底部向上评估。
  • 第一个匹配规则(包括按键和时间)的规则被接受。
  • 不再处理更多规则。
  • 如果找到规则并且有设置命令,则执行该命令。

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

现在,您可以使用首选项:打开键盘快捷方式来检查特定按键绑定了什么。要打开此视图,请在Mac上按++P,在Windows和Linux上按Ctrl+Shift+P ,然后查找此选项。

enter image description here

鉴于开发速度,这可能会在未来几个月内成为扩展或包括在vscode中。


1.19版本中,"Quick Outline"被叫做其他什么名字了吗?我在面板中找不到这个命令。谢谢! - Joe Casadonte

8

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

Record Keys button

vscode 将捕获您输入的按键命令并为其显示结果,而不必输入正确语法的按键命令文本说明,这几乎就像Atom中的按键绑定解析器


1
@vt5491 现在应该接受这个答案。 - Jeremy

4

我认为它的功能较少,但是在VS Code中,开发人员: 切换键盘快捷方式故障排除命令提供了相当粗略的等效功能。在此处查看文档:https://code.visualstudio.com/docs/getstarted/keybindings#_troubleshooting-keybindings

以下是您将看到的输出示例(截至2021年9月1日): enter image description here

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

有时也很难确定所有相关的when子句。为此,请查看这些文档:https://code.visualstudio.com/api/references/when-clause-contexts#inspect-context-keys-utility (在这种情况下,上下文密钥是when子句)。知道活动的when子句、确切的按键组合,然后查看键盘快捷方式页面并按优先顺序对相关的按键组合进行排序,最终应该能够获得相同的功能,只是比在Atom中获得这些信息更麻烦。


1
一个简单的方法是在高级键绑定编辑器中查找它以找出键绑定。
进入键盘快捷方式(文件 -> 首选项 -> 键盘快捷方式或ctrl + k, ctrl + s),然后按“打开并编辑keybinding.json以进行高级自定义”。screen shot 之后,将打开一个有2个选项卡的窗口,在其中可以找到所需的键(显然使用ctrl + f)。screen shot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接