尝试以扩展 VS Code 中的代理模式!

代码导航

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在文件内部导航符号。通过键入:,符号将按类别分组。按下并导航到所需位置。

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

错误与警告

警告或错误可以通过配置的任务、丰富的语言服务或持续在后台分析代码的 linters 生成。由于我们喜欢无 Bug 的代码,警告和错误会出现在多个地方。

  • 在状态栏中,有所有错误和警告计数的摘要。
  • 您可以单击摘要或按下⇧⌘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