【问题标题】:Is there a way to see what command is run when you press a key?有没有办法查看按键时运行的命令?
【发布时间】:2019-09-05 13:12:12
【问题描述】:

我想在 Visual Studio Code 中重新映射我的键,但不知道在某些情况下运行了哪些命令。

例如,如果我在查找小部件中(上下文 findInputFocused==true)并且想要转到输入文本的开头,我可以按 home ,但我似乎无法找到连接到 home 按钮以将光标带到输入开头的命令(我已经重新映射了链接到 home 的所有命令强>按钮)。 另一个例子是在终端中按 up 来获取上一个命令。

如何找到命令以便我可以将它们重新映射到我自己的键?

【问题讨论】:

  • 我是否正确理解您所询问的情况,即您在键盘快捷键中取消绑定或重新绑定了所有 Home 绑定,但 Home 在 Find 小部件中继续执行其默认行为?跨度>
  • 你选择了两个不好的例子,因为我认为 vscode 与它们的功能没有太大关系。终端中的 upArrow 是一个 shell 命令历史快捷方式,而不是 vscode 本身提供的功能,因此不会出现在任何 vscode 的快捷方式或命令文档中。
  • home 命令只是一个 html 元素的内置命令 - 像文本框、输入等。就像在这个 SO 注释文本区域中一样。它真的不是一个 vscode 命令。所以我并不惊讶它没有在 vscode 的快捷命令中列出。有一个cursorHome 命令可以删除,但不会停止查找小部件主页功能。
  • 我假设您知道“键盘快捷键”页面中的“记录键”选项?
  • @Scott 是的,我把它们都反弹了。

标签: visual-studio-code command keyboard-shortcuts


【解决方案1】:

我认为标题中提出的问题“有没有办法查看命令”的最佳答案是。这被归档为VSCode Issue #38602: Add feature to describe keybinding by pressing said key(s),被关闭为“重复”,但他们真正的意思是“不必要的”。

为什么没有必要?假设您可以在键绑定 UI (VSCode Issue #57935: Search in keybindings editor by pressing keyboard shortcut) 中搜索您感兴趣的键,如以下问题中所述:

但是,问题的主体侧重于两个超出现有问题和答案范围的示例,即其行为不是通过 VSCode 键绑定系统确定的键。具体来说,我们有:

  • 在“查找”框处于焦点时按 Home
  • 在终端窗口中按

这些不仅没有“描述键”,而且据我通过实验得知,不可能将不同的键绑定到它们的功能。例如,Home 默认绑定到 cursorHome 命令,但将其他内容绑定到 cursorHome,例如 Ctrl+P , 不会导致能够通过按该新组合转到“查找”框的开头。正如 Mark 所指出的,这些绑定可能来自一些较低级别的组件基础架构,并且键默认绑定的命令无法替代它。我找到了关于 Tab 键的something similar

因此,如果您的最终目标是能够按不同的键来完成这些事情,您可能需要向 VSCode 团队提交新问题。 (粗略搜索issues 后,我没有看到任何存在。)

【讨论】:

  • 嗨,斯科特,感谢您的回答。我将跟进 VSCode 团队。如果可能的话,我认为如果公开其中一些内置操作会很好。
【解决方案2】:

此信息大部分已经在问题的 cmets 中,它不一定涵盖特定功能可能来自操作系统而不是 VSCode 的情况(这可能是 Home 键中的情况原始问题)。

这就是我所做的,以便在 Emacs 中给我类似 describe-key 的东西。在keybindings.json 我有:

[
    // ...snip...

    // Show the keybinding GUI and "record keys" if you're already in the
    // keybinding GUI
    //
    // To see all bindings for a key or key combination (from any ordinary
    // editor), do `C-h C-k C-h C-k` then the key(s) you're interested in.
    { "key": "ctrl+h ctrl+k", "command": "workbench.action.openGlobalKeybindings", "when": "!inKeybindings" },
    { "key": "ctrl+h ctrl+k", "command": "keybindings.editor.recordSearchKeys", "when": "inKeybindings" },

    // describe-key - Toggle the debug keybindings console
    //
    // It's noisy, but it does show you what binding is actually executed for a
    // keypress in a particular context:
    // https://code.visualstudio.com/docs/getstarted/keybindings#_troubleshooting-keybindings
    { "key": "ctrl+h ctrl+shift+k", "command": "workbench.action.toggleKeybindingsLog" },

    // ...snip...
]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 2020-10-06
    • 2022-01-16
    • 2022-10-21
    相关资源
    最近更新 更多