VS Code 的命令很多,有些每天都用,有些隔一段时间才想起来。记不住快捷键时,我通常要打开命令面板重新搜索。我希望常用操作能一直放在旁边,既能点击执行,也能顺手查看键位,于是做了 Quick Command Deck。

它在侧边栏提供一份“命令名称+快捷键”的清单,上方可以搜索,找到后点击即可执行。

从命令清单到可操作的面板

扩展内置了 36 条常用命令,涵盖文件导航、编辑、终端、窗口和设置等操作。例如转到文件、全局搜索、格式化文档、切换终端和禅模式。

点击一条命令时,扩展通过 vscode.commands.executeCommand() 调用对应命令 ID。因此,执行操作不依赖模拟按键,即使修改了快捷键,点击仍然调用同一个命令。

面板也支持键盘操作:直接输入名称、键位或命令 ID 进行筛选,用上下方向键选择,按 Enter 执行,按 Esc 清空搜索。

安装和打开

在 VS Code 扩展市场搜索 Quick Command Deck,也可以从项目提供的 VSIX 文件安装:

1
code --install-extension quick-command-deck-<version>.vsix

安装后,在右侧辅助侧边栏中找到 Command Deck,打开“快捷命令”视图。如果没有看到入口,可以通过命令面板执行:

1
Quick Command Deck: 打开命令面板(侧边栏)

容器可以根据使用习惯移动到其他侧栏位置。当前本地版本为 0.2.0。

配置自己的命令清单

默认清单之外,也可以在 settings.json 中指定一组常用操作。下面这组示例保留文件跳转、终端与禅模式,并开启紧凑显示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"quickCommandDeck.fontSize": 14,
"quickCommandDeck.showKeys": true,
"quickCommandDeck.dense": true,
"quickCommandDeck.commands": [
{
"label": "转到文件",
"command": "workbench.action.quickOpen",
"keys": "Ctrl+P"
},
{
"label": "切换终端",
"command": "workbench.action.terminal.toggleTerminal",
"keys": "Ctrl+`"
},
{
"label": "禅模式",
"command": "workbench.action.toggleZenMode",
"keys": "Ctrl+Alt+Z"
}
]
}

command 填命令 ID,label 是面板中显示的名称。keys 只是显示提示,填写它不会注册或修改快捷键。将 commands 留空,会恢复使用内置清单。

扩展默认还会收录已安装扩展声明的键位。只想显示自己的清单时,可以把 quickCommandDeck.includeExtensionCommands 设为 false。

找到命令,也知道它能不能用

扩展会通过 vscode.commands.getCommands() 检查命令是否存在。当前环境中没有注册的命令会置灰并标注,减少点击后才发现不可用的情况。

这个检查只能确认命令是否存在,不能保证它在任何上下文都能执行。例如某些编辑操作仍需要先打开文件,具体条件由目标命令决定。

面板支持默认顺序、按点击次数、按名称和按来源分组四种排序,排序偏好会跨工作区保留。点击次数只统计面板内点击,不统计在其他位置按快捷键执行命令的次数,因此它反映的是面板使用习惯,而非所有编辑器操作。

自定义快捷键如何显示

为了展示用户修改过的键位,扩展会尝试读取 keybindings.json。自动探测不准确时,可以执行 Quick Command Deck: 选择快捷键文件(keybindings.json),手动指定文件。

这里也有边界:同一命令存在多条绑定时取第一条,when 条件不参与判断,所以显示的键位不能完全代表所有场景下的实际绑定。修改快捷键文件后,点击视图标题栏的刷新按钮即可更新,不需要重载整个窗口。

与背景美化扩展如何搭配

Quick Command Deck 使用公开扩展 API 提供侧栏视图和命令调用,不需要修改 VS Code 安装目录。它与 Empty Editor Watermark 分工不同:一个把常用操作集中起来,另一个负责空编辑器的背景外观。可以按需要单独使用,也可以一起安装。

项目地址

项目使用 MIT 许可证。后续功能、安装方式和配置变更以仓库说明为准。