代码导航

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

快速文件导航

提示:你可以在输入⌘P(Windows,Linux Ctrl+P)(快速打开)时,按名称打开任何文件。

Explorer 非常适合在探索项目时切换文件。然而,当你在做任务时,你会发现自己会快速在同一组文件之间跳来跳去。VS Code 提供了两个强大的命令,用于在文件间导航,并配有易于使用的快捷键。

按住Ctrl并按Tab键可查看编辑器组中所有已打开的文件列表。要打开这些文件,再次用Tab键选择你想访问的文件,然后松开Ctrl打开它。

快速导航

或者,你也可以使用 ⌃-(Windows Alt+Left,Linux Ctrl+Alt+-⌃⇧-(Windows Alt+Right,Linux Ctrl+Shift+-来在文件间导航和编辑位置。如果你在同一个文件的不同行间跳跃,这些快捷键可以让你轻松地在这些位置之间切换。

面包屑

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

面包屑

面包屑总是显示文件路径,并通过语言扩展显示符号路径直到光标位置。显示的符号与轮廓视图和“前往符号”中相同。

在路径中选择面包屑会显示该关卡的下拉菜单,方便你快速导航到其他文件夹和文件。

面包屑文件夹下拉菜单

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

面包屑符号下拉菜单

你可以用“视图>显示面包屑”开关或

breadcrumbs.enabled
  • 在VS代码中打开
  • 在VS Code Insiders中开放
环境

面包屑定制

面包屑的外观可以自定义。如果你有非常长的路径,或者只对文件路径或符号路径感兴趣,可以使用

breadcrumbs.filePath
  • 在VS代码中打开
  • 在VS Code Insiders中开放
以及
breadcrumbs.symbolPath
  • 在VS代码中打开
  • 在VS Code Insiders中开放
设定。两者都支持。关于,不对劲, 和最后它们定义了你是否看到或看到路径的哪一部分。默认情况下,面包屑会在面包屑左侧显示文件和符号图标,但你可以通过设置来移除这些图标
面包屑.图标
  • 在VS代码中打开
  • 在VS Code Insiders中开放
太虚假了。

面包屑中的符号顺序

你可以用

breadcrumbs.symbol排序
  • 在VS代码中打开
  • 在VS Code Insiders中开放
设定。

允许的值有:

  • 职位- 文件中的位置(默认)
  • 名称- 字母顺序
  • 类型- 符号类型顺序

面包屑路径复制

你可以在编辑器标签下右键点击“复制面包屑路径”来复制完整的面包屑路径。这会将完整路径,包括文件和符号名复制到剪贴板。

你可以用

breadcrumbs.symbolPathSepacator
  • 在VS代码中打开
  • 在VS Code Insiders中开放
环境。默认值为..

面包屑键盘导航

要作面包屑,请使用“聚焦面包屑”命令或按⇧⌘。(Windows,Linux Ctrl+Shift+)。它会选择最后一个元素,并打开一个下拉菜单,让你导航到兄弟文件或符号。使用Windows,Linux 左侧)(Windows,Linux 侧)快捷键,切换到当前元素的前后。下拉菜单出现后,开始输入——所有匹配元素都会被高亮显示,并选择最佳匹配以便快速导航。

你也可以不用下拉菜单就和面包屑互动。按⇧⌘;(Windows,Linux Ctrl+Shift+;聚焦最后一个元素,使用 (Windows,Linux 左)和 (Windows,Linux 导航,使用空格键在编辑器中显示该元素。

前往定义

如果有语言支持,你可以按F12进入符号定义。

如果你按Ctrl并将鼠标悬停在某个符号上,会显示声明的预览:

控制滑鼠

提示:你可以用Ctrl+Click跳转到定义,或者用Ctrl+Alt+Click打开旁边的定义。

前往类型定义

有些语言还支持通过编辑器的上下文菜单或命令调色板中执行“Go to Type Definition”命令,跳转到符号的类型定义。这将带你了解符号类型的定义。指挥部editor.action.goToTypeDefinition默认不绑定键盘快捷键,但你可以添加自定义快捷键

前往实现

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

前往象征

你可以用⇧⌘O(Windows,Linux的Ctrl+Shift+O在文件中导航符号。输入符号将按类别分组。按,导航到你想去的地方。

前往象征

按名称开符号

一些语言支持通过⌘T跨文件跳转到符号(Windows,Linux Ctrl+T)。输入你想导航的类型首字母,无论包含哪个文件,然后按回车

按名称开符号

偷看

我们认为,当你只想快速检查某件事时,没有什么比大幅切换更糟糕的了。这就是我们支持偷看编辑的原因。当你执行“前往参考文献”搜索(通过⇧F12(Windows,Linux Shift+F12)或窥视定义(通过⌥F12(Windows Alt+F12,Linux Ctrl+Shift+F10)时,我们会将结果嵌入内联:

窥视参考资料

你可以在窥视编辑器中切换不同参考,并在那里快速编辑。点击查看到的编辑器文件名或在结果列表中双击,可以在外部编辑器中打开该引用。

提示:此外,如果你按 Esc 键或在窥视编辑器区域双击,窥视窗口会关闭。你可以用

编辑.stablePeek
  • 在VS代码中打开
  • 在VS Code Insiders中开放
环境

对阵匹配

只要光标靠近其中一个括号,匹配的括号就会被高亮显示。

对阵匹配

提示:你可以用⇧⌘\跳转到匹配括号(Windows,Linux Ctrl+Shift+\

括号对着色

匹配的括号对也可以通过设置来着色

editor.bracketPairColorization.enabled
  • 在VS代码中打开
  • 在VS Code Insiders中开放
确实如此.

括号对着色

所有颜色都可以自定义主题,最多可配置六种颜色。

你可以使用

workbench.color自定义
  • 在VS代码中打开
  • 在VS Code Insiders中开放
要覆盖这些主题带来的颜色,在你的设置中:

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

参考资料

一些语言如C#支持在线引用信息,这些信息会实时更新。这让你能够快速分析你编辑的影响,或者你具体方法或属性在项目中的受欢迎程度:

参考资料

提示:点击这些注释,直接调用“查看参考”动作。

提示:CodeLens中显示的参考信息可以通过以下方式开启或关闭

editor.codeLens
  • 在VS代码中打开
  • 在VS Code Insiders中开放
环境

更名符号

一些语言支持跨文件重命名符号。按F2,然后输入新的目标名称,再按回车。所有符号的使用都会在文件中重新命名。

更名

错误与警告

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

  • 在状态栏中,有所有错误和警告计数的总结。
  • 你可以点击摘要或按⇧⌘M(Windows,Linux Ctrl+Shift+M显示问题面板,列出所有当前错误。
  • 如果你打开一个有错误或警告的文件,它们会与文本一致并显示在概览尺中。

问题错误面板

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

错误与警告内文

代码动作

警告和错误可以提供代码作(也称为快速修复)来帮助解决问题。这些会在编辑器左边框显示为一个灯泡。点击灯泡会显示代码作选项或执行该动作。

镶嵌提示

有些语言提供内嵌提示:即关于源代码的额外信息,这些信息被内联渲染。这通常用于展示推断类型。下面的示例展示了内嵌提示,展示了推断出的JavaScript变量类型和函数返回类型。

TypeScript 中推断类型的内嵌提示

嵌入提示可以通过以下方式启用或禁用

editor.inlay提示.enabled
  • 在VS代码中打开
  • 在VS Code Insiders中开放
设置时,默认值已启用。需要像 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.

下一步

既然你已经了解了编辑器的工作原理,是时候尝试其他一些方法了......

常见问题

我怎样才能在快速打开中自动选择第二个条目,而不是第一个?

与指挥部workbench.action.quickOpenPreviousEditor你可以在快速打开中自动选择第二个条目。如果你想从列表中选择上一个条目,而不必调用其他快捷键,这会很有用:

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

我该如何配置 Ctrl+Tab 来跨越所有组的编辑器

默认情况下,Ctrl+Tab 键可在同一编辑组的编辑者之间切换。如果你想在所有组中打开的所有编辑器之间导航,你可以为workbench.action.quickOpen之前最近用过编辑器以及workbench.action.quickOpen最近用过编辑器命令:

[
  {
    "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.open之前最近使用编辑器
组内打开 最近使用的编辑器 workbench.action.openNext最近使用编辑组
在组中打开之前使用的编辑器 workbench.action.open之前最近使用编辑组