现已推出!阅读 10 月份的新功能和修复。

代码导航

Visual Studio Code 具有高生产力的代码编辑器,它与编程语言服务相结合,为您提供了 IDE 的强大功能和文本编辑器的速度。在本主题中,我们将首先介绍 VS Code 的语言智能功能(建议、参数提示、智能代码导航),然后展示核心文本编辑器的强大功能。

快速文件导航

提示:您可以通过键入 ⌘P(Windows、Linux Ctrl+P快速打开)来按名称打开任何文件。

资源管理器非常适合在浏览项目时在文件之间导航。但是,在执行任务时,您会发现自己经常在同一组文件之间快速跳转。VS Code 提供了两个强大的命令,可以通过易于使用的键绑定在文件内和文件之间导航。

按住 Ctrl 键并按下 Tab 键以查看编辑器组中所有打开文件的列表。要打开这些文件之一,请再次使用 Tab 键选择要导航到的文件,然后释放 Ctrl 键以将其打开。

Quick Navigation

或者,您可以使用 ⌃-(Windows Alt+Left,Linux Ctrl+Alt+-⌃⇧-(Windows Alt+Right,Linux Ctrl+Shift+- 在文件和编辑位置之间导航。如果您在同一个文件的不同行之间跳转,这些快捷方式可以方便地在这两个位置之间导航。

面包屑

编辑器在其内容上方有一个名为 面包屑 的导航栏。它显示当前位置,并允许您快速在文件夹、文件和符号之间导航。

Breadcrumbs

面包屑始终显示文件路径,并在语言扩展的帮助下,显示到光标位置的符号路径。显示的符号与大纲视图和转到符号中的符号相同。

选择路径中的面包屑将显示一个下拉菜单,其中包含该级别的同级元素,以便您可以快速导航到其他文件夹和文件。

breadcrumb folder dropdown

如果当前文件类型支持符号的语言支持,您将看到当前符号路径以及同一级别和以下级别的其他符号的下拉菜单。

breadcrumb symbol dropdown

您可以使用视图>显示面包屑切换或使用 breadcrumbs.enabled 设置 关闭面包屑。

面包屑自定义

可以自定义面包屑的外观。如果您有很长的路径,或者只对文件路径或符号路径感兴趣,您可以使用 breadcrumbs.filePathbreadcrumbs.symbolPath 设置。两者都支持onofflast,它们定义是否或显示路径的哪一部分。默认情况下,面包屑在面包屑左侧显示文件和符号图标,但您可以通过将 breadcrumbs.icons 设置为 false 来删除图标。

面包屑中的符号顺序

您可以使用 breadcrumbs.symbolSortOrder 设置控制符号在面包屑下拉菜单中的排序方式。

允许的值为

  • position - 文件中的位置(默认值)
  • name - 按字母顺序
  • type - 符号类型顺序

面包屑键盘导航

要与面包屑交互,请使用聚焦面包屑命令或按 ⇧⌘.(Windows、Linux Ctrl+Shift+.。它将选择最后一个元素并打开一个下拉菜单,允许您导航到同级文件或符号。使用 (Windows、Linux Left(Windows、Linux Right 键盘快捷键转到当前元素之前或之后的元素。下拉菜单出现后,开始输入 - 所有匹配的元素将被突出显示,最匹配的元素将被选中以进行快速导航。

您也可以在没有下拉菜单的情况下与面包屑互动。按下 ⇧⌘; (Windows, Linux Ctrl+Shift+;) 以聚焦最后一个元素,使用 (Windows, Linux Left) (Windows, Linux Right) 进行导航,并使用 Space 在编辑器中显示该元素。

转到定义

如果 语言 支持,您可以通过按下 F12 转到符号的定义。

如果您按下 Ctrl 并在符号上悬停,将显示声明的预览。

Ctrl Hover

提示:您可以使用 Ctrl+Click 跳转到定义,或使用 Ctrl+Alt+Click 将定义打开到侧边。

转到类型定义

一些 语言 还支持通过从编辑器上下文菜单或命令面板运行转到类型定义命令来跳转到符号的类型定义。这将带您到符号类型的定义。默认情况下,命令 editor.action.goToTypeDefinition 未绑定到键盘快捷键,但您可以添加自己的自定义 键盘快捷键

转到实现

语言 还支持通过按下 ⌘F12 (Windows, Linux Ctrl+F12) 跳转到符号的实现。对于接口,这将显示该接口的所有实现者,对于抽象方法,这将显示该方法的所有具体实现。

转到符号

您可以使用 ⇧⌘O (Windows, Linux Ctrl+Shift+O) 导航文件内的符号。通过输入 :,符号将按类别分组。按 UpDown 导航到您想要的位置。

Go to Symbol

按名称打开符号

一些语言支持跨文件跳转到符号,使用 ⌘T (Windows, Linux Ctrl+T)。键入要导航到的类型的第一个字母(无论它位于哪个文件),然后按 Enter

Open symbol by name

窥视

我们认为,当您只想快速检查某件事时,没有什么比大型上下文切换更糟糕的了。这就是我们支持预览编辑器的原因。当您执行转到引用搜索(通过 ⇧F12 (Windows, Linux Shift+F12)),或预览定义(通过 ⌥F12 (Windows Alt+F12, Linux Ctrl+Shift+F10)),我们将结果嵌入到内联。

Peek References

您可以在预览编辑器中不同引用之间导航,并在那里进行快速编辑。单击预览编辑器文件名或双击结果列表将在外层编辑器中打开引用。

提示:此外,如果您按下 Escape 或双击预览编辑器区域,则会关闭预览窗口。您可以使用 editor.stablePeek 设置 禁用此行为。

括号匹配

一旦光标靠近其中一个括号,匹配的括号就会突出显示。

Bracket Matching

提示:您可以使用 ⇧⌘\ (Windows, Linux Ctrl+Shift+\) 跳转到匹配的括号。

括号对颜色化

通过将 editor.bracketPairColorization.enabled 设置为 true,也可以将匹配的括号对颜色化。

Bracket Pair Colorization

所有颜色都是可主题化的,最多可以配置六种颜色。

您可以使用 workbench.colorCustomizations 在您的设置中覆盖这些主题提供的颜色。

"workbench.colorCustomizations": {
    "editorBracketHighlight.foreground1": "#FFD700",
    "editorBracketHighlight.foreground2": "#DA70D6",
    "editorBracketHighlight.foreground3": "#179fff",
},

引用信息

一些语言(如 C#)支持内联引用信息,该信息会实时更新。这使您能够快速分析您的编辑的影响或特定方法或属性在整个项目中的流行程度。

Reference information

提示:通过单击这些注释直接调用预览引用操作。

提示:CodeLens 中显示的引用信息可以通过 editor.codeLens 设置 打开或关闭。

重命名符号

一些语言支持跨文件重命名符号。按下 F2,然后键入新的目标名称,然后按 Enter。符号的所有用法都将被重命名,跨文件。

Rename

错误和警告

警告或错误可以通过 配置的任务、丰富的语言服务或 linter 生成,这些 linter 会在后台不断分析您的代码。因为我们喜欢无错误的代码,所以警告和错误会在多个地方显示。

  • 在状态栏中,有一个所有错误和警告计数的摘要。
  • 您可以单击摘要或按下 ⇧⌘M (Windows, Linux Ctrl+Shift+M) 以显示包含所有当前错误列表的问题面板。
  • 如果您打开一个有错误或警告的文件,它们将与文本和概述标尺内联呈现。

errors in problems panel

提示:要循环遍历当前文件中的错误或警告,您可以按下 ⌥F8 (Windows, Linux Alt+F8)⇧⌥F8 (Windows, Linux Shift+Alt+F8),这将显示一个内联区域,详细说明问题和可能的代码操作(如果可用)。

Errors and Warnings Inline

代码操作

警告和错误可以提供代码操作(也称为快速修复)以帮助修复问题。这些将在编辑器中显示在左侧边距中,表示为一个灯泡。单击灯泡将显示代码操作选项或执行该操作。

内联提示

一些语言提供内联提示:即有关源代码的附加信息,这些信息在内联呈现。这通常用于显示推断的类型。以下示例显示了内联提示,这些提示显示了 JavaScript 变量和函数返回类型的推断类型。

Inlay hints for inferred types in TypeScript

可以使用 editor.inlayHints.enabled 设置启用/禁用内联提示,默认情况下已启用。需要 TypeScript 或 Rust 等扩展程序才能提供实际的内联提示信息。

为了您的安全,VS Code 在从编辑器打开传出网站链接之前会显示提示。

Outgoing link prompt

您可以继续访问浏览器中的外部网站,或者选择复制链接或取消请求。如果您选择配置受信任域,则下拉菜单允许您信任确切的 URL、信任 URL 域和子域或信任所有域以禁用传出链接保护。

Configure Trusted Domains dropdown

管理受信任域选项(随时可从命令面板访问)将调出受信任域 JSON 文件,您可以在其中添加、删除或修改受信任域。

// You can use the "Manage Trusted Domains" command to open this file.
// Save this file to apply the trusted domains rules.
[
  "*.twitter.com"
]

受信任域 JSON 文件还包含有关支持的域格式示例的注释以及默认情况下受信任的域列表,例如 https://*.visualstudio.comhttps://*.microsoft.com

下一步

现在您知道了编辑器的工作原理,是时候尝试一些其他事情了…

常见问题

如何自动选择快速打开中的第二个条目而不是第一个条目?

使用命令 workbench.action.quickOpenPreviousEditor,您可以让快速打开中的第二个条目自动选中。这在您想要选择列表中的上一个条目而不必调用其他键盘快捷键时非常有用。

[
  {
    "key": "ctrl+p",
    "command": "workbench.action.quickOpenPreviousEditor"
  },
  {
    "key": "ctrl+p",
    "command": "-workbench.action.quickOpen"
  }
]

如何配置 Ctrl+Tab 以跨所有组的所有编辑器导航?

默认情况下,Ctrl+Tab 在同一编辑器组的编辑器之间导航。如果您想跨所有组的所有打开的编辑器导航,可以为 workbench.action.quickOpenPreviousRecentlyUsedEditorworkbench.action.quickOpenLeastRecentlyUsedEditor 命令创建键盘快捷键。

[
  {
    "key": "ctrl+tab",
    "command": "workbench.action.quickOpenPreviousRecentlyUsedEditor",
    "when": "!inEditorsPicker"
  },
  {
    "key": "ctrl+shift+tab",
    "command": "workbench.action.quickOpenLeastRecentlyUsedEditor",
    "when": "!inEditorsPicker"
  }
]

如何不使用选择器在最近使用的编辑器之间导航?

以下列出了您可以用来在编辑器中导航而不打开选择器的一些命令。

命令 命令 ID
打开下一个最近使用的编辑器 workbench.action.openNextRecentlyUsedEditor
打开以前使用的编辑器 workbench.action.openPreviousRecentlyUsedEditor
在组中打开下一个最近使用的编辑器 workbench.action.openNextRecentlyUsedEditorInGroup
在组中打开以前使用的编辑器 workbench.action.openPreviousRecentlyUsedEditorInGroup