用于在VS Code中打开命令调色板的键盘快捷键?

时间:2017-08-08 19:50:29

标签: visual-studio-code

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

enter image description here

3 个答案:

答案 0 :(得分:4)

好像f1工作而不是控制+ shift + p。不知道为什么它将其列为键盘快捷键......

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

答案 1 :(得分:0)

为什么会发生

很可能是因为您的OS键绑定与VSCode键绑定冲突。而且很可能是您的OS键盘绑定(在我们的例子中是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的重要性:)

在VSCode中,我使用Right Ctrl+Right Shift进行系统布局更改,而在Left Ctrl+Left Shift+P中使用命令调色板。

现在可以使用了:

[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系统上的众所周知的错误

1234

Windows?

我在两个系统中都具有Ctrl+Shift组合:Windows和Ubuntu。但是此问题仅在Ubuntu上发生。 Windows可以正常使用。

答案 2 :(得分:0)

对我来说,它与英特尔图形命令中心绑定在一起,它预装在我的联想笔记本电脑中。

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