【问题标题】:Keyboard Shortcut for opening command palette in VS Code?在 VS Code 中打开命令面板的键盘快捷键?
【发布时间】:2017-08-08 19:50:28
【问题描述】:

在运行 VS Code 的 Windows 10 上,如何使用键盘快捷键打开命令面板?在视图菜单下它说快捷键是 ctrl+shift+P 但这样做不会打开命令面板?

【问题讨论】:

  • 所述快捷键在 vscode 中不起作用,解决这个问题毫无疑问......也许有人有修复。否则 F1 工作。
  • 就我而言,Macro Recorder,一个外部程序,正在吃掉我的 CTRL + SHIFT + P。如果有人的键绑定在键绑定重新绑定窗口中被“吃掉”,这就像一个外部原因。跨度>

标签: visual-studio-code


【解决方案1】:

嗯,似乎 f1 有效,而不是 control+shift+p。不知道为什么它把它列为键盘快捷键...

编辑:所以在我的一些计算机上 ctrl + shift + p 工作正常。不确定它是否与特定笔记本电脑上的映射冲突。

【讨论】:

  • 打开键盘快捷键(Windows:文件 -> 首选项 -> 键盘快捷键;Mac:代码 -> 首选项 -> 键盘快捷键)并确保 ctr + shift + p 未分配给多个命令。在 Mac 和 Windows 10 上,它被分配给 Show All Commands(我所期望的)和 workbench.action.quickOpenNavigatePreviousInFilePicker,它也被分配给 ctrl + p。这些值都在默认键绑定中。删除绑定并没有解决问题,但我认为它可能有某种相关性。
  • 注意:我意识到键绑定有一个“位置”方面。
  • 这个答案实际上并不能解决问题。分辨率是多少?
  • @James ctrl+shift+p 适用于大多数人。我怀疑这里的解决方案是检查您的绑定文件和其他可能有冲突的程序。
【解决方案2】:

为什么会发生

很可能是因为您的操作系统键绑定与 VSCode 键绑定冲突。并且很可能您的操作系统键绑定(在我们的例子中为Ctrl+Shift)被绑定用于重要的事情(例如,更改布局),并且由于这个系统将焦点从应用程序转移到系统,并且应用程序不能接收keypress 事件。

任何应用都无法接收Ctrl-Shift-*事件,不仅仅是VSCode

如何测试

我使用的是 Ubuntu,我设置了 Ctrl+Shift 组合来更改布局。之后我打开开发者控制台 (Developer: Toggle Keyboard Shortcuts Troubleshooting) 并进行测试。这是日志:

[2020-09-13 11:28:35.706] [renderer1] [info] [KeybindingService]: / Received  keydown event - modifiers: [ctrl], code: ControlLeft, keyCode: 17, key: Control
[2020-09-13 11:28:35.706] [renderer1] [info] [KeybindingService]: | Converted keydown event - modifiers: [ctrl], code: ControlLeft, keyCode: 5 ('Ctrl')
[2020-09-13 11:28:35.706] [renderer1] [info] [KeybindingService]: \ Keyboard event cannot be dispatched.

这里发生了什么?该应用程序 (VSCode) 检测到Left Ctrl 按下。但是当我按下Left Shift 时,系统(Ubuntu)会处理Any Ctrl+Any Shift 组合以更改布局。因为系统(Ubuntu)处理了这个重要事件,所以它不会在应用程序(VSCode)中发送这个事件。因此,应用程序(VSCode)没有收到Left Shift按键事件,因为它被系统(Ubuntu)中断了。

如果您看到相同的内容,那么您知道问题的原因。

最简单的解决方案

将系统Ctrl+Shift(默认情况下它侦听Any - 左或右)事件更改为Right Ctrl+Right Shift(或左)事件。在这种情况下,系统将只监听右键,并在应用程序中发送左键。您无需修改​​应用快捷方式(只要它们不完全使用左右键)。

注意Any(默认)、LeftRight 的重要性:)

我使用Right Ctrl+Right Shift 进行系统布局更改,Left Ctrl+Left Shift+P 用于 VSCode 中的命令面板。

现在可以使用了:

[2020-09-13 11:57:47.607] [renderer1] [info] [KeybindingService]: / Received  keydown event - modifiers: [ctrl], code: ControlLeft, keyCode: 17, key: Control
[2020-09-13 11:57:47.607] [renderer1] [info] [KeybindingService]: | Converted keydown event - modifiers: [ctrl], code: ControlLeft, keyCode: 5 ('Ctrl')
[2020-09-13 11:57:47.607] [renderer1] [info] [KeybindingService]: \ Keyboard event cannot be dispatched.
[2020-09-13 11:57:47.715] [renderer1] [info] [KeybindingService]: / Received  keydown event - modifiers: [ctrl,shift], code: ShiftLeft, keyCode: 16, key: Shift
[2020-09-13 11:57:47.715] [renderer1] [info] [KeybindingService]: | Converted keydown event - modifiers: [ctrl,shift], code: ShiftLeft, keyCode: 4 ('Shift')
[2020-09-13 11:57:47.715] [renderer1] [info] [KeybindingService]: \ Keyboard event cannot be dispatched.
[2020-09-13 11:57:47.789] [renderer1] [info] [KeybindingService]: / Received  keydown event - modifiers: [ctrl,shift], code: KeyP, keyCode: 80, key: P
[2020-09-13 11:57:47.790] [renderer1] [info] [KeybindingService]: | Converted keydown event - modifiers: [ctrl,shift], code: KeyP, keyCode: 46 ('P')
[2020-09-13 11:57:47.790] [renderer1] [info] [KeybindingService]: | Resolving ctrl+shift+[KeyP]
[2020-09-13 11:57:47.790] [renderer1] [info] [KeybindingService]: \ From 3 keybinding entries, matched workbench.action.showCommands, when: no when condition, source: user.

这是 Linux 系统上众所周知的错误

1, 2, 3, 4

Windows?

我在两个系统中都有Ctrl+Shift 组合:Windows 和 Ubuntu。但是这个问题只发生在 Ubuntu 上。 Windows 可以正常工作。

【讨论】:

    【解决方案3】:

    对我来说,它绑定到预装在我的联想笔记本电脑中的 Intel Graphics Command Center。

    我缩小这个问题的最快方法是打开 Windows 任务管理器,一一杀死非重要服务,然后再次在 VS Code 中测试快捷方式。

    【讨论】:

      猜你喜欢
      • 2017-06-30
      • 1970-01-01
      • 2017-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      相关资源
      最近更新 更多