Visual Studio Code 键盘快捷方式

mobile3656 ⌚ 2025-07-29 07:02:27 👤 admin 👁️ 868 ❤️ 46
Visual Studio Code 键盘快捷方式

编辑

Visual Studio Code 键盘快捷方式

Visual Studio Code 允许你直接通过键盘执行大多数任务。本文介绍了如何修改 VS Code 附带的默认键盘快捷方式。

注意如果你在 Mac 上访问此页面,你将看到 Mac 的键盘快捷方式。如果你使用 Windows 或 Linux 访问,你将看到该平台的按键。如果你需要其他平台的键盘快捷方式,请将鼠标悬停在你感兴趣的按键上。

键盘快捷方式编辑器

VS Code 提供了功能丰富的键盘快捷方式编辑体验,通过键盘快捷方式编辑器。该编辑器列出了所有可用命令,无论它们是否带有键盘快捷方式,并允许你使用可用操作更改、删除或重置它们的键盘快捷方式。要查找命令或键盘快捷方式,请使用搜索框并输入命令或快捷方式来筛选列表。

要打开键盘快捷方式编辑器,请选择 文件 > 首选项 > 键盘快捷方式 菜单,或在命令面板中使用 首选项:打开键盘快捷方式 命令 (⌘K ⌘S (Windows, Linux Ctrl+K Ctrl+S))。

注意键盘快捷方式与你当前的键盘布局匹配。例如,在美国键盘布局中的键盘快捷方式 Cmd+\ 在布局更改为德语时将显示为 Ctrl+Shift+Alt+Cmd+7。更改键盘快捷方式的对话框会根据你的键盘布局分配正确且所需的键盘快捷方式。

自定义 UI 操作的快捷方式

要自定义 UI 操作的键盘快捷方式,请右键单击工作台中的任何操作项,然后选择 配置键绑定。这将打开键盘快捷方式编辑器,并筛选到相应的命令。如果该操作具有 when 子句,它将自动包含在内,从而更容易地按照你的需求设置键盘快捷方式。

键位映射扩展

键位映射扩展会修改 VS Code 快捷方式以匹配其他编辑器的快捷方式,这样你就不需要学习新的键盘快捷方式了。

选择 文件 > 首选项 > 从...迁移键盘快捷方式 菜单,以获取流行键位映射扩展的列表。在 Marketplace 中也有一个 键位映射类别 的扩展。

键盘快捷方式参考

我们提供了一个可打印的默认键盘快捷方式版本。选择 帮助 > 键盘快捷方式参考 以显示一个精简的 PDF 版本,适合打印以方便参考。

以下链接提供了访问三个特定平台版本(美国英语键盘)的权限

Windows

macOS

Linux

检测键盘快捷方式冲突

如果你安装了许多扩展或修改了键盘快捷方式,可能会出现键盘快捷方式冲突,即同一个键盘快捷方式映射到多个命令。这可能导致令人困惑的行为,特别是当你在编辑器中移动时,不同的键盘快捷方式会进入和退出作用域。

右键单击键盘快捷方式列表中的一个项目,然后选择 显示相同键绑定 以查看所有具有相同键盘快捷方式的条目。

键盘快捷方式故障排除

要解决键盘快捷方式问题,你可以执行命令 开发人员:切换键盘快捷方式故障排除。这将激活已分派键盘快捷方式的日志记录,并打开输出面板以及相应的日志文件。

然后你可以按下你想要的键盘快捷方式,并检查 VS Code 检测到的是哪个键盘快捷方式以及调用了哪个命令。

例如,在 macOS 的代码编辑器中按下 cmd+/ 时,日志输出将是

[KeybindingService]: / Received keydown event - modifiers: [meta], code: MetaLeft, keyCode: 91, key: Meta

[KeybindingService]: | Converted keydown event - modifiers: [meta], code: MetaLeft, keyCode: 57 ('Meta')

[KeybindingService]: \ Keyboard event cannot be dispatched.

[KeybindingService]: / Received keydown event - modifiers: [meta], code: Slash, keyCode: 191, key: /

[KeybindingService]: | Converted keydown event - modifiers: [meta], code: Slash, keyCode: 85 ('/')

[KeybindingService]: | Resolving meta+[Slash]

[KeybindingService]: \ From 2 keybinding entries, matched editor.action.commentLine, when: editorTextFocus && !editorReadonly, source: built-in.

在示例日志中,第一个按键按下事件是针对 MetaLeft 键 (cmd) 的,无法分派。第二个按键按下事件是针对 Slash 键 (/) 的,并以 meta+[Slash] 形式分派。有两个键盘快捷方式条目映射自 meta+[Slash],其中匹配的一个是用于命令 editor.action.commentLine,该命令具有 when 条件 editorTextFocus && !editorReadonly,并且是一个内置的键盘快捷方式条目。

查看已修改的键盘快捷方式

要筛选列表以仅显示你已修改的快捷方式,请在 更多操作 (...) 菜单中选择 显示用户键绑定 命令。这将把 @source:user 筛选器应用于 键盘快捷方式 编辑器(来源 为“用户”)。

高级自定义

VS Code 在 keybindings.json 文件中记录你已自定义的键盘快捷方式。对于高级自定义,你也可以直接修改 keybindings.json 文件。

要打开 keybindings.json 文件

打开 键盘快捷方式 编辑器,然后选择编辑器标题栏右侧的 打开键盘快捷方式 (JSON) 按钮。

或者,在命令面板中使用 打开默认键盘快捷方式 (JSON) 命令 (⇧⌘P (Windows, Linux Ctrl+Shift+P))。

键盘规则

VS Code 中的键盘快捷方式配置也称为键盘规则。每条规则包含以下属性

key: 描述按下的键,例如 ⌘F (Windows, Linux Ctrl+F)。

command: 要执行的 VS Code 命令的标识符,例如 workbench.view.explorer 用于打开资源管理器视图。

when: (可选)包含布尔表达式的子句,该表达式根据当前上下文进行评估。

组合键(两次单独的按键操作)通过用空格分隔两次按键来描述。例如,Ctrl+K Ctrl+C。

当按下某个键时,应用以下评估规则

规则从下到上进行评估。

第一个同时匹配 key 和 when 子句的规则将被接受。

如果找到一条规则,则不再处理更多规则。

如果找到一条规则并且设置了 command,则执行该 command。

额外的 keybindings.json 规则在运行时附加到默认规则的底部,从而允许它们覆盖默认规则。VS Code 会监视 keybindings.json 文件,因此在 VS Code 运行时编辑它将实时更新规则。

键盘快捷方式的分派通过分析以 JSON 形式表达的规则列表来完成。以下是一些示例

// Keyboard shortcuts that are active when the focus is in the editor

{ "key": "home", "command": "cursorHome", "when": "editorTextFocus" },

{ "key": "shift+home", "command": "cursorHomeSelect", "when": "editorTextFocus" },

// Keyboard shortcuts that are complementary

{ "key": "f5", "command": "workbench.action.debug.continue", "when": "inDebugMode" },

{ "key": "f5", "command": "workbench.action.debug.start", "when": "!inDebugMode" },

// Global keyboard shortcuts

{ "key": "ctrl+f", "command": "actions.find" },

{ "key": "alt+left", "command": "workbench.action.navigateBack" },

{ "key": "alt+right", "command": "workbench.action.navigateForward" },

// Global keyboard shortcuts using chords (two separate keypress actions)

{ "key": "ctrl+k enter", "command": "workbench.action.keepEditor" },

{ "key": "ctrl+k ctrl+w", "command": "workbench.action.closeAllEditors" },

接受的键

key 由修饰键和键本身组成。

接受以下修饰键

平台

修饰键

macOS

Ctrl+, Shift+, Alt+, Cmd+

Windows

Ctrl+, Shift+, Alt+, Win+

Linux

Ctrl+, Shift+, Alt+, Meta+

接受以下键

f1-f19, a-z, 0-9

`, -, =, [, ], \, ;, ', ,, ., /

left, up, right, down, pageup, pagedown, end, home

tab, enter, escape, space, backspace, delete

pausebreak, capslock, insert

numpad0-numpad9, numpad_multiply, numpad_add, numpad_separator

numpad_subtract, numpad_decimal, numpad_divide

命令参数

你可以使用参数调用命令。如果你经常对特定文件或文件夹执行相同的操作,这将非常有用。你可以添加自定义键盘快捷方式来执行你想要的操作。

以下是一个示例,它覆盖了 Enter 键以打印一些文本

{

"key": "enter",

"command": "type",

"args": { "text": "Hello World" },

"when": "editorTextFocus"

}

type 命令将接收 {"text": "Hello World"} 作为其第一个参数,并将“Hello World”添加到文件中,而不是执行默认命令。

有关接受参数的命令的更多信息,请参阅内置命令。

运行多个命令

可以通过使用命令 runCommands 将键盘快捷方式配置为按顺序运行多个命令。

运行多个不带参数的命令

以下示例复制当前行向下,将当前行标记为注释,并将光标移动到复制的行。

{

"key": "ctrl+alt+c",

"command": "runCommands",

"args": {

"commands": [

"editor.action.copyLinesDownAction",

"cursorUp",

"editor.action.addCommentLine",

"cursorDown"

]

}

},

向命令传递参数

此示例创建一个新的未命名 TypeScript 文件并插入一个自定义代码段。

{

"key": "ctrl+n",

"command": "runCommands",

"args": {

"commands": [

{

"command": "workbench.action.files.newUntitledFile",

"args": {

"languageId": "typescript"

}

},

{

"command": "editor.action.insertSnippet",

"args": {

"langId": "typescript",

"snippet": "class ${1:ClassName} {\n\tconstructor() {\n\t\t$0\n\t}\n}"

}

}

]

}

},

请注意,由 runCommands 运行的命令会将 "args" 的值作为第一个参数接收。在前面的示例中,workbench.action.files.newUntitledFile 接收 {"languageId": "typescript" } 作为其第一个也是唯一一个参数。

要传递多个参数,你需要将 "args" 作为数组

{

"key": "ctrl+shift+e",

"command": "runCommands",

"args": {

"commands": [

{

// command invoked with 2 arguments: vscode.executeCommand("myCommand", "arg1", "arg2")

"command": "myCommand",

"args": ["arg1", "arg2"]

}

]

}

}

要将数组作为第一个参数传递,请将该数组包装在另一个数组中:"args": [ [1, 2, 3] ]。

删除键盘快捷方式

要删除键盘快捷方式,请右键单击键盘快捷方式编辑器中的条目,然后选择 移除键绑定。

要使用 keybindings.json 文件删除键盘快捷方式,请在 command 中添加一个 -,该规则将成为删除规则。

这是一个示例

// In Default Keyboard Shortcuts

...

{ "key": "tab", "command": "tab", "when": ... },

{ "key": "tab", "command": "jumpToNextSnippetPlaceholder", "when": ... },

{ "key": "tab", "command": "acceptSelectedSuggestion", "when": ... },

...

// To remove the second rule, for example, add in keybindings.json:

{ "key": "tab", "command": "-jumpToNextSnippetPlaceholder" }

要用空操作覆盖特定的键盘快捷方式规则,你可以指定一个空命令

// To override and disable any `tab` keyboard shortcut, for example, add in keybindings.json:

{ "key": "tab", "command": "" }

键盘布局

注意本节仅涉及键盘快捷方式,不涉及在编辑器中的输入。

键是虚拟键的字符串表示,不一定与按下时生成的字符相关。更准确地说

参考:虚拟键代码 (Windows)

tab 用于 VK_TAB (0x09)

; 用于 VK_OEM_1 (0xBA)

= 用于 VK_OEM_PLUS (0xBB)

, 用于 VK_OEM_COMMA (0xBC)

- 用于 VK_OEM_MINUS (0xBD)

. 用于 VK_OEM_PERIOD (0xBE)

/ 用于 VK_OEM_2 (0xBF)

` 用于 VK_OEM_3 (0xC0)

[ 用于 VK_OEM_4 (0xDB)

\ 用于 VK_OEM_5 (0xDC)

] 用于 VK_OEM_6 (0xDD)

' 用于 VK_OEM_7 (0xDE)

等等。

不同的键盘布局通常会重新定位这些虚拟键或更改按下时产生的字符。当使用非标准美国键盘布局时,Visual Studio Code 会执行以下操作

所有键盘快捷方式都使用当前系统的键盘布局在 UI 中呈现。例如,在使用法语(法国)键盘布局时,拆分编辑器 现在显示为 Ctrl+*

编辑 keybindings.json 时,VS Code 会高亮显示易混淆的键盘快捷方式,即在文件中以标准美国键盘布局下产生的字符表示,但在当前系统键盘布局下需要按下带有不同标签的键的快捷方式。例如,以下是使用法语(法国)键盘布局时默认键盘快捷方式规则的样子

还有一个 UI 控件可以帮助在编辑 keybindings.json 时输入键盘快捷方式规则。要启动 定义键绑定 控件,请按下 ⌘K ⌘K (Windows, Linux Ctrl+K Ctrl+K)。该控件会侦听按键并以序列化 JSON 表示形式在文本框中呈现,并在其下方显示 VS Code 在你当前键盘布局下检测到的键。输入所需的键组合后,你可以按下 Enter,然后插入一个规则片段。

注意在 Linux 上,VS Code 在启动时检测你当前的键盘布局,然后缓存此信息。我们建议你在更改键盘布局时重新启动 VS Code。

独立于键盘布局的绑定

使用扫描码,可以定义不随键盘布局更改而变化的键盘快捷方式。例如

{ "key": "cmd+[Slash]", "command": "editor.action.commentLine", "when": "editorTextFocus" }

接受的扫描码

[F1]-[F19], [KeyA]-[KeyZ], [Digit0]-[Digit9]

[Backquote], [Minus], [Equal], [BracketLeft], [BracketRight], [Backslash], [Semicolon], [Quote], [Comma], [Period], [Slash]

[ArrowLeft], [ArrowUp], [ArrowRight], [ArrowDown], [PageUp], [PageDown], [End], [Home]

[Tab], [Enter], [Escape], [Space], [Backspace], [Delete]

[Pause], [CapsLock], [Insert]

[Numpad0]-[Numpad9], [NumpadMultiply], [NumpadAdd], [NumpadComma]

[NumpadSubtract], [NumpadDecimal], [NumpadDivide]

when 子句上下文

VS Code 通过可选的 when 子句为你提供了对何时启用键盘快捷方式的精确控制。如果你的键盘快捷方式没有 when 子句,则该键盘快捷方式始终全局可用。when 子句评估为 true 或 false,以决定是否启用键盘快捷方式。

VS Code 根据 VS Code UI 中可见和活动的元素设置各种上下文键和特定值。例如,内置的 启动调试 命令具有键盘快捷方式 F5,该快捷方式仅在有可用调试器(上下文 debuggersAvailable 为 true)且编辑器不在调试模式下(上下文 inDebugMode 为 false)时才启用。

你也可以直接在默认的 keybinding.json 文件中查看键盘快捷方式的 when 子句(首选项:打开默认键盘快捷方式 (JSON))。

{ "key": "f5", "command": "workbench.action.debug.start",

"when": "debuggersAvailable && !inDebugMode" },

条件运算符

对于 when 子句条件表达式,以下条件运算符对于键盘快捷方式很有用

运算符

符号

示例

相等

==

"editorLangId == typescript"

不等

!=

"resourceExtname != .js"

||

"isLinux||isWindows"

&&

"textInputFocus && !editorReadonly"

匹配

=~

"resourceScheme =~ /^untitled$|^file$/"

你可以在 when 子句上下文 参考中找到 when 子句条件运算符的完整列表。

可用上下文

你可以在 when 子句上下文参考 中找到一些可用的 when 子句上下文。

该列表并非详尽无遗,你可以通过在键盘快捷方式编辑器中搜索和筛选(首选项:打开键盘快捷方式)或查看默认的 keybindings.json 文件(首选项:打开默认键盘快捷方式 (JSON))来查找其他 when 子句上下文。

重构的自定义键盘快捷方式

editor.action.codeAction 命令允许你为特定的重构(代码操作)配置键盘快捷方式。例如,下面的键盘快捷方式会触发 提取函数 重构代码操作

{

"key": "ctrl+shift+r ctrl+e",

"command": "editor.action.codeAction",

"args": {

"kind": "refactor.extract.function"

}

}

这在重构文章中进行了深入介绍,你可以在其中了解不同类型的代码操作以及在存在多个可能重构时如何确定它们的优先级。

相关资源

VS Code 默认键盘快捷方式参考

常见问题

如何查找特定按键绑定到哪个命令?

在键盘快捷方式编辑器中,你可以根据特定按键进行筛选,查看哪些命令绑定到哪些键。在以下截图中,你可以看到 Ctrl+Shift+P 绑定到 显示所有命令,以调出命令面板。

如何为操作添加键盘快捷方式,例如,将 Ctrl+D 添加到“删除行”

在 默认键盘快捷方式 中找到触发该操作的规则,并在你的 keybindings.json 文件中编写其修改版本

// Original, in Default Keyboard Shortcuts

{ "key": "ctrl+shift+k", "command": "editor.action.deleteLines",

"when": "editorTextFocus" },

// Modified, in User/keybindings.json, Ctrl+D now will also trigger this action

{ "key": "ctrl+d", "command": "editor.action.deleteLines",

"when": "editorTextFocus" },

如何只为某些文件类型添加键盘快捷方式?

在你的 when 子句中使用 editorLangId 上下文键

{ "key": "shift+alt+a", "command": "editor.action.blockComment",

"when": "editorTextFocus && editorLangId == csharp" },

我修改了 keybindings.json 中的键盘快捷方式;为什么它们不起作用?

最常见的问题是文件中存在语法错误。否则,请尝试删除 when 子句或选择不同的 key。不幸的是,目前这只是一个试错过程。

07/09/2025

相关数据

海康威视超五类网线多少米一箱(海康超五类网线用在室外寿命)

海康威视超五类网线多少米一箱(海康超五类网线用在室外寿命)

目录 隐藏 1. 海康威视超五类网线多少米一箱 2. 海康威视超五类网线的特点 3. 海康威视超五类网线的价格 4. 购买海康威视超五类网线的建议 海

06-28 电视直播网365
高速摄像机十大品牌【2025年最新排行榜】

高速摄像机十大品牌【2025年最新排行榜】

01 杰伟世JVC 企业名称:杰伟世建伍(中国)投资有限公司 品牌创始人:高柳建五郎 联系方式:400-088-8799 查看详情 品牌定位:灵活便捷 专业高端

07-05 mobile3656
热血传奇

热血传奇

本文目录导读: 1.传奇世界石墓阵走法 2.传奇石墓阵走法 3.热血传奇石墓阵走法 4.热血传奇石墓阵走法 5.传奇小巴双传势石墓阵走法 传奇世界石

07-17 天天365彩票软件官方下载3D
盛世长安沐足足道服务项目

盛世长安沐足足道服务项目

佩佩养生馆是一家推荐健康减压放松的综合性服务平台,始终本着“顾客至上,完美服务”的原则精心为您提供多种SPA水疗油压等项目,带给您

07-21 天天365彩票软件官方下载3D
寻找最佳拍照体验?看看这四款索尼手机的评测!

寻找最佳拍照体验?看看这四款索尼手机的评测!

随着现代生活的节奏加快,人们对手机的要求也在不断提高,除了基础的通讯功能外,他们希望手机具备更强的处理能力和卓越的摄像效果。接

06-29 mobile3656
ppt上如何添加马赛克(ppt中怎么加马赛克)

ppt上如何添加马赛克(ppt中怎么加马赛克)

文章目录 [+] 本文目录一览: 1、Ppt的图形里如何填充马赛克效果,如图 2、ppt图片上怎么打马赛克 3、ppt如何打马赛克?如何利用ppt为图片添加

06-28 电视直播网365