代码导航
Visual Studio Code 拥有一款高生产力的代码编辑器,结合编程语言服务,它为您提供了 IDE 的强大功能和文本编辑器的敏捷速度。在本主题中,我们将首先介绍 VS Code 的语言智能特性(建议、参数提示、智能代码导航),然后展示核心文本编辑器的强大之处。
快速文件导航
提示:您可以在输入 ⌘P (Windows, Linux Ctrl+P) (快速打开) 后,通过文件名打开任意文件。
资源管理器非常适合在浏览项目时在不同文件之间导航。然而,当您执行某项任务时,往往需要在同一组文件之间快速切换。VS Code 提供了两个强大的命令,通过易于使用的快捷键在文件内部及跨文件进行导航。
按住 Ctrl 并按下 Tab 可查看当前编辑器组中所有打开文件的列表。要打开其中一个文件,请继续按 Tab 选择要跳转的文件,然后松开 Ctrl 即可打开它。

或者,您可以使用 ⌃- (Windows Alt+Left, Linux Ctrl+Alt+-) 和 ⌃⇧- (Windows Alt+Right, Linux Ctrl+Shift+-) 在文件和编辑位置之间导航。如果您是在同一个文件的不同行之间跳转,这些快捷键允许您轻松地在这些位置间穿梭。
面包屑导航
编辑器内容上方有一个导航栏,称为 面包屑导航 (Breadcrumbs)。它显示当前位置,并允许您在文件夹、文件和符号之间快速导航。

面包屑导航始终显示文件路径,并且在语言扩展的支持下,还会显示到达光标位置的符号路径。显示的符号与“大纲”视图和“转到符号”中的符号相同。
在路径中选择一个面包屑会显示一个下拉菜单,其中包含该层级的同级项,以便您快速跳转到其他文件夹和文件。

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

您可以通过 视图 > 显示面包屑 切换开关,或使用 breadcrumbs.enabled 设置 来关闭面包屑导航。
面包屑自定义
面包屑的外观可以自定义。如果您路径很长,或者只对文件路径或符号路径感兴趣,可以使用 breadcrumbs.filePath 和 breadcrumbs.symbolPath 设置。两者都支持 on(开启)、off(关闭)和 last(仅显示最后一个),它们决定了您是否以及看到路径的哪一部分。默认情况下,面包屑在左侧显示文件和符号图标,但您可以通过将 breadcrumbs.icons 设置为 false 来移除这些图标。
面包屑中的符号排序
您可以使用 breadcrumbs.symbolSortOrder 设置来控制面包屑下拉菜单中符号的排序方式。
允许的值为:
position- 在文件中的位置(默认)name- 按字母顺序type- 按符号类型顺序
面包屑路径复制
您可以通过右键点击编辑器标签页并选择 复制面包屑路径 来复制完整的面包屑路径。这会将包括文件和符号名称在内的完整路径复制到剪贴板。
您可以使用 breadcrumbs.symbolPathSeparator 设置来配置符号路径分隔符。默认值为 .。
面包屑键盘导航
要与面包屑交互,请使用 聚焦面包屑 命令或按下 ⇧⌘. (Windows, Linux Ctrl+Shift+.)。它会选中最后一个元素并打开一个下拉菜单,允许您导航到同级文件或符号。使用 ← (Windows, Linux Left) 和 → (Windows, Linux Right) 快捷键转到当前元素之前或之后的元素。当下拉菜单出现时,开始输入——所有匹配的元素都会被高亮显示,且最佳匹配项会被选中,以便快速导航。
您也可以在不打开下拉菜单的情况下与面包屑交互。按下 ⇧⌘; (Windows, Linux Ctrl+Shift+;) 以聚焦最后一个元素,使用 ← (Windows, Linux Left) 和 → (Windows, Linux Right) 进行导航,并使用 Space (空格) 在编辑器中显示该元素。
转到定义
如果语言支持,您可以通过按下 F12 跳转到符号的定义。
如果您按住 Ctrl 并将鼠标悬停在符号上,将出现声明的预览。

提示:您可以使用 Ctrl+单击 跳转到定义,或使用 Ctrl+Alt+单击 在侧边打开定义。
转到类型定义
一些语言也支持通过从编辑器上下文菜单或 命令面板 运行 转到类型定义 命令来跳转到符号的类型定义。这会将您带到符号类型的定义处。命令 editor.action.goToTypeDefinition 默认未绑定键盘快捷键,但您可以添加自己的自定义快捷键。
转到实现
语言还可以支持通过按下 ⌘F12 (Windows, Linux Ctrl+F12) 跳转到符号的实现。对于接口,这会显示该接口的所有实现者;对于抽象方法,这会显示该方法的所有具体实现。
转到符号
您可以使用 ⇧⌘O (Windows, Linux Ctrl+Shift+O) 导航文件内的符号。通过输入 :,符号将按类别分组。按下 Up (向上) 或 Down (向下) 键导航到您想去的地方。

按名称打开符号
部分语言支持使用 ⌘T (Windows, Linux Ctrl+T) 跨文件跳转到符号。输入您要导航到的类型的首字母(无论该类型位于哪个文件中),然后按下 Enter。

速览
我们认为,当你只想快速检查某项内容时,巨大的上下文切换是最糟糕的体验。这就是我们支持预览编辑器的原因。当您执行 转到引用 搜索(通过 ⇧F12 (Windows, Linux Shift+F12)),或 预览定义(通过 ⌥F12 (Windows Alt+F12, Linux Ctrl+Shift+F10))时,我们会以内联方式嵌入结果。

您可以在预览编辑器中的不同引用之间导航,并直接进行快速编辑。点击预览编辑器的文件名或在结果列表中双击,将在主编辑器中打开该引用。
提示:此外,按下 Escape 或在预览编辑器区域内双击可关闭预览窗口。您可以使用 editor.stablePeek 设置 禁用此行为。
括号匹配
当光标靠近括号时,匹配的括号将会高亮显示。

提示:您可以使用 ⇧⌘\ (Windows, Linux Ctrl+Shift+\) 跳转到匹配的括号。
括号对颜色化
匹配的括号对也可以通过将 editor.bracketPairColorization.enabled 设置为 true 来实现着色。

所有颜色均支持主题定制,最多可配置六种颜色。
您可以使用 workbench.colorCustomizations 在您的设置中覆盖这些由主题提供的颜色。
"workbench.colorCustomizations": {
"editorBracketHighlight.foreground1": "#FFD700",
"editorBracketHighlight.foreground2": "#DA70D6",
"editorBracketHighlight.foreground3": "#179fff",
},
引用信息
像 C# 这样的一些语言支持内联引用信息,这些信息会实时更新。这使您可以快速分析编辑的影响,或者查看特定方法或属性在整个项目中的使用热度。

提示:通过点击这些标注直接调用 预览引用 操作。
提示:可以通过 editor.codeLens 设置 打开或关闭 CodeLens 中显示的引用信息。
重命名符号
一些语言支持跨文件重命名符号。按下 F2,输入所需的新名称并按下 Enter。该符号的所有用法都将在所有文件中被重命名。

错误与警告
警告或错误可以通过已配置的任务、强大的语言服务或在后台持续分析代码的 linter(代码检查工具)生成。因为我们热衷于编写无 Bug 的代码,所以警告和错误会在多个地方显示。
- 在状态栏中,有一个所有错误和警告数量的汇总。
- 您可以点击汇总信息或按下 ⇧⌘M (Windows, Linux Ctrl+Shift+M) 来显示 问题 面板,其中列出了当前所有的错误。
- 如果您打开一个包含错误或警告的文件,它们将与文本内联渲染,并显示在概览标尺中。

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

代码操作
警告和错误可以提供代码操作(也称为快速修复)以帮助解决问题。这些操作将以灯泡图标的形式显示在编辑器左侧边缘。点击灯泡将显示代码操作选项或直接执行操作。
内嵌提示 (Inlay Hints)
一些语言提供内嵌提示(Inlay Hints):即以内联方式渲染的有关源代码的附加信息。这通常用于显示推断出的类型。下方的示例显示了显示 JavaScript 变量推断类型和函数返回类型的内嵌提示。

内嵌提示可以通过 editor.inlayHints.enabled 设置来启用/禁用,默认情况下是启用的。需要 TypeScript 或 Rust 等扩展程序来提供实际的内嵌提示信息。
外部链接保护
为了保护您的安全,VS Code 在从编辑器打开外部网站链接之前会显示提示。

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

管理受信任的域 选项也可随时从命令面板访问,它会打开 受信任的域 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.com 和 https://*.microsoft.com。
后续步骤
现在您已经了解了编辑器的工作原理,是时候尝试其他一些功能了……
- 简介视频 - 代码编辑 - 观看关于代码编辑功能的介绍视频。
- 用户界面 - 如果您错过了关于 VS Code 的基本操作介绍。
- 快捷键 - 了解如何根据您的偏好修改键盘快捷键。
- 调试 - 这是 VS Code 真正出彩的地方。
常见问题
如何让“快速打开”自动选中第二个条目而不是第一个?
通过 workbench.action.quickOpenPreviousEditor 命令,您可以让“快速打开”自动选中第二个条目。如果您想从列表中选择上一个条目而无需调用其他键盘快捷键,这将非常有用。
[
{
"key": "ctrl+p",
"command": "workbench.action.quickOpenPreviousEditor"
},
{
"key": "ctrl+p",
"command": "-workbench.action.quickOpen"
}
]
如何配置 Ctrl+Tab 以在所有组的所有编辑器之间导航
默认情况下,Ctrl+Tab 在同一个编辑器组的编辑器之间切换。如果您想在所有组的所有已打开编辑器之间导航,可以为 workbench.action.quickOpenPreviousRecentlyUsedEditor 和 workbench.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 |