现已推出!阅读有关 11 月的新功能和修复的信息。

Visual Studio Code 的快捷键绑定

Visual Studio Code 允许您直接从键盘执行大多数任务。此页面列出了默认绑定(键盘快捷方式),并介绍了如何更新它们。

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

键盘快捷方式编辑器

VS Code 通过键盘快捷方式编辑器提供丰富的键盘快捷方式编辑体验。编辑器列出了所有可用命令(包括有和没有快捷键绑定的命令),并允许您使用可用的操作更改/删除/重置它们的快捷键绑定。您可以使用搜索框查找命令或快捷键绑定。您可以通过转到 文件 > 首选项 > 键盘快捷方式下的菜单,或使用 首选项:打开键盘快捷方式命令 (⌘K ⌘S (Windows, Linux Ctrl+K Ctrl+S)) 来打开此编辑器。

Keyboard Shortcuts

最重要的是,您可以根据自己的键盘布局查看快捷键绑定。例如,在美国键盘布局中,快捷键绑定 Cmd+\ 在布局更改为德语时将显示为 Ctrl+Shift+Alt+Cmd+7。输入快捷键绑定的对话框将根据您的键盘布局分配正确且所需的快捷键绑定。

要进行更高级的快捷键自定义,请阅读高级自定义

自定义 UI 操作的快捷方式

您可以快速自定义用户界面操作的快捷键绑定。右键单击工作台中任何操作项,然后选择 自定义快捷键绑定。如果操作具有 when 子句,则会自动包含它,从而更轻松地按照您需要的方式设置快捷键绑定。

键映射扩展

键盘快捷方式对于提高工作效率至关重要,而更改键盘习惯可能会很困难。为了帮助解决这个问题,文件 > 首选项 > 从...迁移键盘快捷方式 显示了常用键映射扩展的列表。这些扩展修改 VS Code 的快捷方式以匹配其他编辑器的快捷方式,因此您无需学习新的键盘快捷方式。市场中还有一个键映射类别的扩展。

提示:单击上面的扩展磁贴以阅读说明和评论,以确定哪个扩展最适合您。在 市场中查看更多信息。

键盘快捷方式参考

我们还有一个这些键盘快捷方式的可打印版本。帮助 > 键盘快捷方式参考 会显示一个简洁的 PDF 版本,适合打印为方便参考。

以下是三个特定于平台的版本(美国英语键盘)的链接

检测快捷键绑定冲突

如果您安装了许多扩展,或者您自定义了键盘快捷方式,有时可能会出现快捷键绑定冲突,其中相同的键盘快捷方式映射到多个命令。这可能会导致令人困惑的行为,特别是当您在编辑器中移动时,不同的快捷键绑定会不断进入和超出范围。

键盘快捷方式编辑器有一个上下文菜单命令 显示相同快捷键绑定,它将根据键盘快捷方式过滤快捷键绑定以显示冲突。

show keybinding conflicts menu

选择您认为过载的快捷键绑定的命令,您可以查看是否定义了多个命令、快捷键绑定的来源以及它们何时处于活动状态。

show keybinding conflicts result

排查快捷键绑定问题

要排查快捷键绑定问题,您可以执行命令 开发人员:切换键盘快捷方式疑难解答。这将激活已分派的键盘快捷方式的日志记录,并打开一个带有相应日志文件的输出面板。

然后,您可以按下所需的快捷键绑定,并检查 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.

第一个 keydown 事件是针对 MetaLeft 键 (cmd) 的,并且无法分派。第二个 keydown 事件是针对 Slash 键 (/) 的,并作为 meta+[Slash] 分派。有两个快捷键绑定条目从 meta+[Slash] 映射,匹配的是命令 editor.action.commentLine 的条目,它具有 when 条件 editorTextFocus && !editorReadonly,并且是一个内置的快捷键绑定条目。

查看已修改的快捷键绑定

您可以在 VS Code 的 键盘快捷方式 编辑器中使用 更多操作 (...) 菜单中的 显示用户快捷键绑定 命令查看任何用户修改的键盘快捷方式。这会将 @source:user 过滤器应用于 键盘快捷方式 编辑器(来源为“用户”)。

Default Keyboard Shortcuts

高级自定义

VS Code 中的所有键盘快捷方式都可以通过 keybindings.json 文件进行自定义,您可以在其中覆盖默认键盘快捷方式

要打开 keybindings.json 文件

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

    打开键盘快捷方式 JSON 按钮 在命令面板中 (⇧⌘P (Windows, Linux Ctrl+Shift+P))。

键盘规则

每个规则由以下部分组成

  • 一个描述按下按键的 key
  • 一个包含要执行的命令的标识符的 command
  • 一个可选的 when 子句,其中包含一个布尔表达式,该表达式将根据当前的上下文进行评估。

和弦(两个单独的按键操作)通过空格分隔两个按键来描述。例如,Ctrl+K Ctrl+C

当按下某个键时

  • 规则会从底部顶部进行评估。
  • 第一个匹配的规则,无论是 key 还是 when 方面,都会被接受。
  • 不再处理更多的规则。
  • 如果找到规则并且设置了 command,则会执行该 command

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

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

// Keybindings that are active when the focus is in the editor
{ "key": "home",            "command": "cursorHome",                  "when": "editorTextFocus" },
{ "key": "shift+home",      "command": "cursorHomeSelect",            "when": "editorTextFocus" },

// Keybindings that are complementary
{ "key": "f5",              "command": "workbench.action.debug.continue", "when": "inDebugMode" },
{ "key": "f5",              "command": "workbench.action.debug.start",    "when": "!inDebugMode" },

// Global keybindings
{ "key": "ctrl+f",          "command": "actions.find" },
{ "key": "alt+left",        "command": "workbench.action.navigateBack" },
{ "key": "alt+right",       "command": "workbench.action.navigateForward" },

// Global keybindings 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-f19a-z0-9
  • `, -, =, [, ], \, ;, ', ,, ., /
  • leftuprightdownpageuppagedownendhome
  • tabenterescapespacebackspacedelete
  • pausebreakcapslockinsert
  • numpad0-numpad9numpad_multiplynumpad_addnumpad_separator
  • numpad_subtractnumpad_decimalnumpad_divide

命令参数

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

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

{
  "key": "enter",
  "command": "type",
  "args": { "text": "Hello World" },
  "when": "editorTextFocus"
}

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

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

运行多个命令

可以使用 runCommands 命令创建按顺序运行多个其他命令的快捷键绑定。

  1. 运行多个无参数的命令:向下复制当前行,将当前行标记为注释,将光标移动到复制的行
{
  "key": "ctrl+alt+c",
  "command": "runCommands",
  "args": {
    "commands": [
      "editor.action.copyLinesDownAction",
      "cursorUp",
      "editor.action.addCommentLine",
      "cursorDown"
    ]
  }
},
  1. 也可以将参数传递给命令:创建一个新的无标题 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,始终可以重新定义 VS Code 的所有快捷键绑定,但进行小的调整可能很困难,尤其是在诸如 TabEscape 等重载键周围。要删除特定的快捷键绑定,请在 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` keybinding, 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+*

render key binding

编辑 keybindings.json 时,VS Code 会突出显示具有误导性的快捷键绑定,这些快捷键绑定在文件中使用标准美国键盘布局下产生的字符表示,但需要使用当前系统的键盘布局下具有不同标签的键来按下。例如,以下是使用法语(法国)键盘布局时默认键盘快捷方式规则的外观

keybindings.json guidance

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

key binding widget

注意:在 Linux 上,Visual Studio 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)才会启用此快捷键。

Start Debugging when clause in the Keyboard Shorts editor

你还可以在“默认快捷键绑定 JSON”(首选项:打开默认键盘快捷方式(JSON))中直接查看快捷键绑定的 when 子句。

{ "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 子句上下文。

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

自定义重构的快捷键绑定

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

{
  "key": "ctrl+shift+r ctrl+e",
  "command": "editor.action.codeAction",
  "args": {
    "kind": "refactor.extract.function"
  }
}

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

默认键盘快捷键

你可以在 VS Code 的键盘快捷方式编辑器中使用更多操作...)菜单中的显示默认快捷键绑定命令查看所有 VS Code 的默认键盘快捷方式。这会将 @source:default 筛选器应用于键盘快捷方式编辑器(来源为“默认”)。

Default Keyboard Shortcuts

您可以使用 首选项: 打开默认键盘快捷方式 (JSON) 命令,以 JSON 文件的形式查看默认键盘快捷方式。

注意: 以下按键是基于标准美国键盘布局呈现的。如果您使用不同的键盘布局,请阅读下文。您可以在 VS Code 的 命令面板视图 -> 命令面板)或 键盘快捷方式 编辑器(文件 > 首选项 > 键盘快捷方式)中查看当前活动的键盘快捷方式。

以下包含的一些命令没有默认键盘快捷方式,因此会显示为 未分配,但您可以分配自己的快捷键绑定。

基本编辑

命令 按键 命令 ID
剪切行(空选区) ⌘X (Windows, Linux Ctrl+X) editor.action.clipboardCutAction
复制行(空选区) ⌘C (Windows, Linux Ctrl+C) editor.action.clipboardCopyAction
粘贴 ⌘V (Windows, Linux Ctrl+V) editor.action.clipboardPasteAction
删除行 ⇧⌘K (Windows, Linux Ctrl+Shift+K) editor.action.deleteLines
在下方插入行 ⌘Enter (Windows, Linux Ctrl+Enter) editor.action.insertLineAfter
在上方插入行 ⇧⌘Enter (Windows, Linux Ctrl+Shift+Enter) editor.action.insertLineBefore
向下移动行 ⌥↓ (Windows, Linux Alt+Down) editor.action.moveLinesDownAction
向上移动行 ⌥↑ (Windows, Linux Alt+Up) editor.action.moveLinesUpAction
向下复制行 ⇧⌥↓ (Windows Shift+Alt+Down, Linux Ctrl+Shift+Alt+Down) editor.action.copyLinesDownAction
向上复制行 ⇧⌥↑ (Windows Shift+Alt+Up, Linux Ctrl+Shift+Alt+Up) editor.action.copyLinesUpAction
撤消 ⌘Z (Windows, Linux Ctrl+Z) undo
重做 ⇧⌘Z (Windows, Linux Ctrl+Y) redo
添加选区到下一个查找匹配项 ⌘D (Windows, Linux Ctrl+D) editor.action.addSelectionToNextFindMatch
将上一个选区移动到下一个查找匹配项 ⌘K ⌘D (Windows, Linux Ctrl+K Ctrl+D) editor.action.moveSelectionToNextFindMatch
撤消上次光标操作 ⌘U (Windows, Linux Ctrl+U) cursorUndo
在每个选定行的末尾插入光标 ⇧⌥I (Windows, Linux Shift+Alt+I) editor.action.insertCursorAtEndOfEachLineSelected
选择当前选区的所有匹配项 ⇧⌘L (Windows, Linux Ctrl+Shift+L) editor.action.selectHighlights
选择当前单词的所有匹配项 ⌘F2 (Windows, Linux Ctrl+F2) editor.action.changeAll
选择当前行 ⌘L (Windows, Linux Ctrl+L) expandLineSelection
在下方插入光标 ⌥⌘↓ (Windows Ctrl+Alt+Down, Linux Shift+Alt+Down) editor.action.insertCursorBelow
在上方插入光标 ⌥⌘↑ (Windows Ctrl+Alt+Up, Linux Shift+Alt+Up) editor.action.insertCursorAbove
跳转到匹配的括号 ⇧⌘\ (Windows, Linux Ctrl+Shift+\) editor.action.jumpToBracket
缩进行 ⌘] (Windows, Linux Ctrl+]) editor.action.indentLines
减少缩进 ⌘[ (Windows, Linux Ctrl+[) editor.action.outdentLines
跳转到行首 Home cursorHome
跳转到行尾 End cursorEnd
跳转到文件末尾 ⌘↓ (Windows, Linux Ctrl+End) cursorBottom
跳转到文件开头 ⌘↑ (Windows, Linux Ctrl+Home) cursorTop
向下滚动行 ⌃PageDown (Windows, Linux Ctrl+Down) scrollLineDown
向上滚动行 ⌃PageUp (Windows, Linux Ctrl+Up) scrollLineUp
向下滚动页面 ⌘PageDown (Windows, Linux Alt+PageDown) scrollPageDown
向上滚动页面 ⌘PageUp (Windows, Linux Alt+PageUp) scrollPageUp
折叠(收起)区域 ⌥⌘[ (Windows, Linux Ctrl+Shift+[) editor.fold
展开(取消收起)区域 ⌥⌘] (Windows, Linux Ctrl+Shift+]) editor.unfold
切换折叠区域 ⌘K ⌘L (Windows, Linux Ctrl+K Ctrl+L) editor.toggleFold
折叠(收起)所有子区域 ⌘K ⌘[ (Windows, Linux Ctrl+K Ctrl+[) editor.foldRecursively
展开(取消收起)所有子区域 ⌘K ⌘] (Windows, Linux Ctrl+K Ctrl+]) editor.unfoldRecursively
折叠(收起)所有区域 ⌘K ⌘0 (Windows, Linux Ctrl+K Ctrl+0) editor.foldAll
展开(取消收起)所有区域 ⌘K ⌘J (Windows, Linux Ctrl+K Ctrl+J) editor.unfoldAll
添加行注释 ⌘K ⌘C (Windows, Linux Ctrl+K Ctrl+C) editor.action.addCommentLine
删除行注释 ⌘K ⌘U (Windows, Linux Ctrl+K Ctrl+U) editor.action.removeCommentLine
切换行注释 ⌘/ (Windows, Linux Ctrl+/) editor.action.commentLine
切换块注释 ⇧⌥A (Windows Shift+Alt+A, Linux Ctrl+Shift+A) editor.action.blockComment
查找 ⌘F (Windows, Linux Ctrl+F) actions.find
替换 ⌥⌘F (Windows, Linux Ctrl+H) editor.action.startFindReplaceAction
查找下一个 Enter editor.action.nextMatchFindAction
查找上一个 ⇧Enter (Windows, Linux Shift+Enter) editor.action.previousMatchFindAction
选择查找匹配项的所有匹配项 ⌥Enter (Windows, Linux Alt+Enter) editor.action.selectAllMatches
切换查找区分大小写 ⌥⌘C (Windows, Linux Alt+C) toggleFindCaseSensitive
切换查找正则表达式 ⌥⌘R (Windows, Linux Alt+R) toggleFindRegex
切换查找全字匹配 ⌥⌘W (Windows, Linux Alt+W) toggleFindWholeWord
切换使用 Tab 键进行焦点设置 ⌃⇧M (Windows, Linux Ctrl+M) editor.action.toggleTabFocusMode
切换渲染空格 toggleRenderWhitespace
切换自动换行 ⌥Z (Windows, Linux Alt+Z) editor.action.toggleWordWrap

富语言编辑

命令 按键 命令 ID
触发建议 ⌃Space (Windows, Linux Ctrl+Space) editor.action.triggerSuggest
触发参数提示 ⇧⌘Space (Windows, Linux Ctrl+Shift+Space) editor.action.triggerParameterHints
格式化文档 ⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I) editor.action.formatDocument
格式化选区 ⌘K ⌘F (Windows, Linux Ctrl+K Ctrl+F) editor.action.formatSelection
转到定义 F12 editor.action.revealDefinition
显示悬停 ⌘K ⌘I (Windows, Linux Ctrl+K Ctrl+I) editor.action.showHover
预览定义 ⌥F12 (Windows Alt+F12, Linux Ctrl+Shift+F10) editor.action.peekDefinition
在侧边打开定义 ⌘K F12 (Windows, Linux Ctrl+K F12) editor.action.revealDefinitionAside
快速修复 ⌘. (Windows, Linux Ctrl+.) editor.action.quickFix
转到引用 ⇧F12 (Windows, Linux Shift+F12) editor.action.goToReferences
重命名符号 F2 editor.action.rename
替换为下一个值 ⇧⌘. (Windows, Linux Ctrl+Shift+.) editor.action.inPlaceReplace.down
替换为上一个值 ⇧⌘, (Windows, Linux Ctrl+Shift+,) editor.action.inPlaceReplace.up
扩展 AST 选择 ⌃⇧⌘→ (Windows, Linux Shift+Alt+Right) editor.action.smartSelect.expand
收缩 AST 选择 ⌃⇧⌘← (Windows, Linux Shift+Alt+Left) editor.action.smartSelect.shrink
删除尾随空格 ⌘K ⌘X (Windows, Linux Ctrl+K Ctrl+X) editor.action.trimTrailingWhitespace
更改语言模式 ⌘K M (Windows, Linux Ctrl+K M) workbench.action.editor.changeLanguageMode

导航

命令 按键 命令 ID
显示所有符号 ⌘T (Windows, Linux Ctrl+T) workbench.action.showAllSymbols
转到行... ⌃G (Windows, Linux Ctrl+G) workbench.action.gotoLine
跳转到文件..., 快速打开 ⌘P (Windows, Linux Ctrl+P) workbench.action.quickOpen
跳转到符号... ⇧⌘O (Windows, Linux Ctrl+Shift+O) workbench.action.gotoSymbol
显示问题 ⇧⌘M (Windows, Linux Ctrl+Shift+M) workbench.actions.view.problems
跳转到下一个错误或警告 F8 editor.action.marker.nextInFiles
跳转到上一个错误或警告 ⇧F8 (Windows, Linux Shift+F8) editor.action.marker.prevInFiles
显示所有命令 ⇧⌘P (Windows, Linux Ctrl+Shift+P)F1 workbench.action.showCommands
导航编辑器组历史 ⌃Tab (Windows, Linux Ctrl+Tab) workbench.action.quickOpenPreviousRecentlyUsedEditorInGroup
后退 ⌃- (Windows Alt+Left, Linux Ctrl+Alt+-) workbench.action.navigateBack
在快速输入中后退 ⌃- (Windows Alt+Left, Linux Ctrl+Alt+-) workbench.action.quickInputBack
前进 ⌃⇧- (Windows Alt+Right, Linux Ctrl+Shift+-) workbench.action.navigateForward
聚焦面包屑 ⇧⌘; (Windows, Linux Ctrl+Shift+;) breadcrumbs.focus
聚焦并选择面包屑 ⇧⌘. (Windows, Linux Ctrl+Shift+.) breadcrumbs.focusAndSelect

编辑器/窗口管理

命令 按键 命令 ID
新建窗口 ⇧⌘N (Windows, Linux Ctrl+Shift+N) workbench.action.newWindow
关闭窗口 ⌘W (Windows, Linux Alt+F4) workbench.action.closeWindow
关闭编辑器 ⌘W (Windows Ctrl+F4, Linux Ctrl+W) workbench.action.closeActiveEditor
关闭文件夹 ⌘K F (Windows, Linux Ctrl+K F) workbench.action.closeFolder
在编辑器组之间循环 workbench.action.navigateEditorGroups
拆分编辑器 ⌘\ (Windows, Linux Ctrl+\) workbench.action.splitEditor
聚焦到第一个编辑器组 ⌘1 (Windows, Linux Ctrl+1) workbench.action.focusFirstEditorGroup
聚焦到第二个编辑器组 ⌘2 (Windows, Linux Ctrl+2) workbench.action.focusSecondEditorGroup
聚焦到第三个编辑器组 ⌘3 (Windows, Linux Ctrl+3) workbench.action.focusThirdEditorGroup
聚焦到左侧的编辑器组 workbench.action.focusPreviousGroup
聚焦到右侧的编辑器组 workbench.action.focusNextGroup
左移编辑器 ⌘K ⇧⌘← (Windows, Linux Ctrl+Shift+PageUp) workbench.action.moveEditorLeftInGroup
右移编辑器 ⌘K ⇧⌘→ (Windows, Linux Ctrl+Shift+PageDown) workbench.action.moveEditorRightInGroup
左移活动编辑器组 ⌘K ← (Windows, Linux Ctrl+K Left) workbench.action.moveActiveEditorGroupLeft
右移活动编辑器组 ⌘K → (Windows, Linux Ctrl+K Right) workbench.action.moveActiveEditorGroupRight
将编辑器移动到下一个组 ⌃⌘→ (Windows, Linux Ctrl+Alt+Right) workbench.action.moveEditorToNextGroup
将编辑器移动到上一个组 ⌃⌘← (Windows, Linux Ctrl+Alt+Left) workbench.action.moveEditorToPreviousGroup

文件管理

命令 按键 命令 ID
新建文件 ⌘N (Windows, Linux Ctrl+N) workbench.action.files.newUntitledFile
打开文件... ⌘O (Windows, Linux Ctrl+O) workbench.action.files.openFile
保存 ⌘S (Windows, Linux Ctrl+S) workbench.action.files.save
全部保存 ⌥⌘S (Windows Ctrl+K S, Linux ) saveAll
另存为... ⇧⌘S (Windows, Linux Ctrl+Shift+S) workbench.action.files.saveAs
关闭 ⌘W (Windows Ctrl+F4, Linux Ctrl+W) workbench.action.closeActiveEditor
关闭其他 ⌥⌘T (Windows, Linux ) workbench.action.closeOtherEditors
关闭组 ⌘K W (Windows, Linux Ctrl+K W) workbench.action.closeEditorsInGroup
关闭其他组 workbench.action.closeEditorsInOtherGroups
关闭左侧的组 workbench.action.closeEditorsToTheLeft
关闭右侧的组 workbench.action.closeEditorsToTheRight
全部关闭 ⌘K ⌘W (Windows, Linux Ctrl+K Ctrl+W) workbench.action.closeAllEditors
重新打开关闭的编辑器 ⇧⌘T (Windows, Linux Ctrl+Shift+T) workbench.action.reopenClosedEditor
保持打开 ⌘K Enter (Windows, Linux Ctrl+K Enter) workbench.action.keepEditor
复制活动文件的路径 ⌘K P (Windows, Linux Ctrl+K P) workbench.action.files.copyPathOfActiveFile
在Windows中显示活动文件 ⌘K R (Windows, Linux Ctrl+K R) workbench.action.files.revealActiveFileInWindows
在新窗口中显示已打开的文件 workbench.action.files.showOpenedFileInNewWindow
与...比较已打开的文件 workbench.files.action.compareFileWith

显示

命令 按键 命令 ID
切换全屏 ⌃⌘F (Windows, Linux F11) workbench.action.toggleFullScreen
切换禅模式 ⌘K Z (Windows, Linux Ctrl+K Z) workbench.action.toggleZenMode
退出禅模式 Escape Escape workbench.action.exitZenMode
放大 ⌘= (Windows, Linux Ctrl+=) workbench.action.zoomIn
缩小 ⌘- (Windows, Linux Ctrl+-) workbench.action.zoomOut
重置缩放 ⌘Numpad0 (Windows, Linux Ctrl+Numpad0) workbench.action.zoomReset
切换侧边栏可见性 ⌘B (Windows, Linux Ctrl+B) workbench.action.toggleSidebarVisibility
显示资源管理器/切换焦点 ⇧⌘E (Windows, Linux Ctrl+Shift+E) workbench.view.explorer
显示搜索 ⇧⌘F (Windows, Linux Ctrl+Shift+F) workbench.view.search
显示源代码管理 ⌃⇧G (Windows, Linux Ctrl+Shift+G) workbench.view.scm
显示运行 ⇧⌘D (Windows, Linux Ctrl+Shift+D) workbench.view.debug
显示扩展 ⇧⌘X (Windows, Linux Ctrl+Shift+X) workbench.view.extensions
显示输出 ⇧⌘U (Windows Ctrl+Shift+U, Linux Ctrl+K Ctrl+H) workbench.action.output.toggleOutput
快速打开视图 ⌃Q (Windows Ctrl+Q, Linux ) workbench.action.quickOpenView
打开新的命令提示符 ⇧⌘C (Windows, Linux Ctrl+Shift+C) workbench.action.terminal.openNativeConsole
切换 Markdown 预览 ⇧⌘V (Windows, Linux Ctrl+Shift+V) markdown.showPreview
在侧边打开预览 ⌘K V (Windows, Linux Ctrl+K V) markdown.showPreviewToSide
切换集成终端 ⌃` (Windows, Linux Ctrl+`) workbench.action.terminal.toggleTerminal
命令 按键 命令 ID
显示搜索 ⇧⌘F (Windows, Linux Ctrl+Shift+F) workbench.view.search
在文件中替换 ⇧⌘H (Windows, Linux Ctrl+Shift+H) workbench.action.replaceInFiles
切换匹配大小写 ⌥⌘C (Windows, Linux Alt+C) toggleSearchCaseSensitive
切换匹配整个单词 ⌥⌘W (Windows, Linux Alt+W) toggleSearchWholeWord
切换使用正则表达式 ⌥⌘R (Windows, Linux Alt+R) toggleSearchRegex
切换搜索详细信息 ⇧⌘J (Windows, Linux Ctrl+Shift+J) workbench.action.search.toggleQueryDetails
聚焦下一个搜索结果 F4 search.action.focusNextSearchResult
聚焦上一个搜索结果 ⇧F4 (Windows, Linux Shift+F4) search.action.focusPreviousSearchResult
显示下一个搜索词 (Windows, Linux Down) history.showNext
显示上一个搜索词 (Windows, Linux Up) history.showPrevious

搜索编辑器

命令 按键 命令 ID
在编辑器中打开结果 ⌘Enter (Windows, Linux Alt+Enter) search.action.openInEditor
聚焦搜索编辑器输入 Escape search.action.focusQueryEditorWidget
再次搜索 ⇧⌘R (Windows, Linux Ctrl+Shift+R) rerunSearchEditorSearch
删除文件结果 ⇧⌘Backspace (Windows, Linux Ctrl+Shift+Backspace) search.searchEditor.action.deleteFileResults

偏好设置

命令 按键 命令 ID
打开设置 ⌘, (Windows, Linux Ctrl+,) workbench.action.openSettings
打开工作区设置 workbench.action.openWorkspaceSettings
打开键盘快捷方式 ⌘K ⌘S (Windows, Linux Ctrl+K Ctrl+S) workbench.action.openGlobalKeybindings
打开用户代码片段 workbench.action.openSnippets
选择颜色主题 ⌘K ⌘T (Windows, Linux Ctrl+K Ctrl+T) workbench.action.selectTheme
配置显示语言 workbench.action.configureLocale

调试

命令 按键 命令 ID
切换断点 F9 editor.debug.action.toggleBreakpoint
开始 F5 workbench.action.debug.start
继续 F5 workbench.action.debug.continue
开始(不调试) ⌃F5 (Windows, Linux Ctrl+F5) workbench.action.debug.run
暂停 F6 workbench.action.debug.pause
单步进入 F11 workbench.action.debug.stepInto

任务

命令 按键 命令 ID
运行构建任务 ⇧⌘B (Windows, Linux Ctrl+Shift+B) workbench.action.tasks.build
运行测试任务 workbench.action.tasks.test

扩展

命令 按键 命令 ID
安装扩展 workbench.extensions.action.installExtension
显示已安装的扩展 workbench.extensions.action.showInstalledExtensions
显示过期的扩展 workbench.extensions.action.listOutdatedExtensions
显示推荐的扩展 workbench.extensions.action.showRecommendedExtensions
显示受欢迎的扩展 workbench.extensions.action.showPopularExtensions
更新所有扩展 workbench.extensions.action.updateAllExtensions

后续步骤

既然您已经了解了我们的快捷键绑定支持,接下来可以...

  • 语言支持 - 我们的“好、更好、最好”语言网格,可查看您的期望
  • 调试 - 这是 VS Code 真正闪光的地方
  • Node.js - 使用示例应用程序的端到端 Node.js 场景

常见问题

如何找出哪个命令绑定到了特定的键?

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

Key bindings quick outline

如何为一个动作添加快捷键绑定,例如,添加 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。不幸的是,在这一点上,这是一个反复试验的过程。