导航和编辑 Java 源代码
Visual Studio Code 首先是一个源代码编辑器,拥有丰富的编辑功能。本文将介绍一些 Java 特有的功能,这些功能在使用 Java 时非常有用。
如果您在使用以下功能时遇到任何问题,可以通过输入问题与我们联系。
代码导航
通过大纲视图,你可以方便地在当前文件中浏览成员。项目视图还能很好地概览你的项目。作为 Java 编辑器,它还支持调用层级、类型层级、定义导航、工作区中的搜索类型等功能。
搜索符号
你可以在当前文件或工作区中搜索符号,以更快地导航代码。
在工作区中搜索符号
要在当前工作区中搜索符号,首先按 ⌘T(Windows,Linux Ctrl+T),然后输入符号名称。潜在匹配列表将与之前相同。如果你选择了在尚未打开的文件中找到的匹配,文件会在导航到匹配位置之前被打开。另外,你也可以使用快速打开(⌘P(Windows,Linux Ctrl+P)),然后输入“#”命令搜索当前工作区。⌘T(Windows,Linux Ctrl+T)只是“#”命令的快捷键,所以一切作都一样。
在当前文件中搜索符号
要在当前文件中搜索符号,使用快速打开(⌘P(Windows,Linux Ctrl+P)),然后输入“@”命令,再输入你要找的符号名称。随着你输入,潜在匹配名单将被显示并筛选。从匹配列表中选择,导航到其所在位置。
Peek 定义
你可以快速查看“窥视定义”功能,了解符号是如何定义的。该功能会在预览窗口中显示定义附近几行代码,方便你查看而不用离开当前位置。
要查看符号的定义,只需将光标放在源代码中该符号使用的位置,然后按⌥F12(Windows Alt+F12,Linux Ctrl+Shift+F10)。或者,你也可以在右键菜单中选择“窥定义”(右键,然后选择窥定义)。
前往定义
你还可以使用“前往定义”功能快速导航到符号定义的位置。
要进入符号定义,将光标放在源代码中该符号出现的任意位置,然后按F12。或者,你也可以在右键菜单中选择“前往定义”(右键点击,然后选择“前往定义”)。当符号只有一个定义时,你将直接导航到其位置,否则竞争定义会显示在前一节描述的窥视窗口中,你必须选择你想去的定义。
前往超级实现
你可以通过鼠标悬停点击“前往超级实现”链接来跟踪类实现和覆盖方法。

呼叫层级
呼叫层级视图显示所有来自或调用某个函数的呼叫,并允许你深入挖掘调用者的调用者和调用的调用。右键点击一个功能,选择“窥视”>“窥视呼叫层级”。

你也可以在函数主体中右键点击,选择“显示调用层级”。

类型层级
类型层级视图展示了 Java 对象之间的继承关系。你可以右键点击某个类型,选择“显示类型层级”。
褶皱区域
折叠区域允许你折叠或展开代码片段,以便更好地查看源代码。
智能选择
通过智能选择(语义选择),你可以根据源代码中插入点位置的语义信息来扩展或缩小选择范围。
- 要扩展选择,请使用 ⌃⇧⌘→(Windows,Linux Shift+Alt+Right)。
- 要缩小选择,可以使用⌃⇧⌘←(Windows,Linux Shift+Alt+Left)。
语义高亮
语法高亮是一项重要功能,能让你更高效地阅读代码。借助语义高亮,VS Code 可以基于 Java 语言服务的符号信息提供更准确的源代码着色。
下面只是一个例子,左边是启用语义高亮后的行为,右边是仅用语法高亮的部分。

你可以在 Java 语言支持扩展维基上了解更多关于 Java 语义高亮的细节。
使用 Spring Boot 导航代码
Spring Boot Tools 扩展为 Spring Boot 项目提供了增强的导航和代码完成支持。
@/显示所有定义的请求映射(映射路径、请求方法、源位置)@+显示所有定义的豆子(豆类名称、豆类、来源位置)@>显示所有功能(原型实现)@显示代码中所有 Spring 注释

想了解更多关于 Visual Studio Code 对 Spring Boot 的支持,请阅读 Visual Studio Code 中的 Spring Boot。
代码编辑
使用 IntelliSense 编辑代码也非常简单,方便智能完成代码和签名细节。你可以使用代码片段以及各种代码动作,比如生成Getter/Setters和组织导入,进一步提升你的生产力。
Visual Studio Code 中的 Java 支持会自动检测代码中的问题,并为您提供快速修复建议。
有关重构和代码作的更多细节,请参见重构和源代码作。
IntelliSense
Visual Studio Code for Java 的代码补全由 Red Hat 的 Language Support™ for Java 提供。该扩展由与Eclipse相同的Java开发工具(JDT)驱动,因此你可以期待同样的支持水平。
此外,还有一个名为IntelliCode的AI辅助IntelliSense。它通过把你最可能用到的项目放在完成列表顶部,帮你节省时间。IntelliCode 的推荐基于 GitHub 上成千上万个开源项目,每个项目都超过 100 颗星,因此它是基于高质量项目中最常见的使用方式进行训练的。结合代码的上下文,完成列表会针对这些实践进行定制。这是IntelliCode for Java 的实际应用。
IntelliCode 与流行的 Java 库和框架如 Java SE 和 Spring 兼容良好。无论你是在做单体Web应用还是现代微服务,它都会帮到你。
创建新文件
VS Code 支持在创建 Java 源文件时应用模板。当你创建.java文件管理器中的文件,语言服务器会自动生成类主体,并为你填充包信息:
代码片段
Visual Studio Code 支持各种流行的 Java 代码片段,帮助你提高生产力,比如 class/interface、syserr、sysout、if/else、try/catch、static main 方法。利用 Java 语言服务器的信息,它还在选择时预览代码片段。
例如,输入“sout”或“sysout”会生成 的代码片段System.out.println().
同样,输入“main”或“psvm”会生成 的代码片段public static void main(String[] args) {}.

完整的快捷方式列表如下:
代码片段快捷方式
| 快捷键 | 描述 |
|---|---|
| ctor | 公共制造商 |
| 多时 | “在” |
| foreach, iter | 对数组或可迭代算法进行迭代 |
| 福里 | 对数组进行迭代 |
| 如果 | if命题 |
| 如果不然 | If-else 语句 |
| IFnull | 如果语句检查空 |
| 如果不零 | 如果语句检查 是否为空 |
| 主,PSVM | 公共静态主方法 |
| 新 | 创建新对象 |
| private_method | 私人方法 |
| private_static_method | 私有静态方法 |
| PRF | 私人领域 |
| protected_method | 受保护方法 |
| public_method | 公共方法 |
| public_static_method | 公共静态方法 |
| 切换 | 开关语句 |
| 西瑟尔,瑟尔 | 打印到标准错误 |
| 系统管理员,系统管理员 | 打印到标准输出 |
| Systrace,苏特姆 | 打印当前方法改为标准化 |
| try_catch | 尝试/接球阻挡 |
| try_resources | try-with-resources陈述 |
| 虽然 | 虽然陈述 |
后缀片段快捷方式
| 快捷键 | 模板内容 | 描述 |
|---|---|---|
| 演员表 | ((某种类型)体验) | 将表达式铸造为新类型 |
| 否则 | 如果(!expr) | 生成一个否定的 if 语句 |
| 对于 | 对于(T项:expr) | 创建一个 for 语句 |
| 福里 | 对于(整数 i = 0;i < expr.length;i++) | 创建一个 for 语句,对数组进行迭代 |
| 福尔 | 对于(int i = expr.length-1;i = >= 0;i--) | 创建一个for语句,以反向顺序迭代数组 |
| 如果 | 如果(Expr) | 生成一个 if 语句 |
| nnull | 如果 (expr != null) | 创建一个if语句,并检查表达式是否未解析为空 |
| 无效 | 如果 (expr == null) | 创建一个if语句,检查表达式是否解析为空 |
| 系统输出 | System.out.println(expr) | 将受影响的字符串发送到 System.out.println(..) 调用 |
| 扔 | 掷出经验 | 抛出给定的异常 |
| VAR | T 名 = expr | 创建一个新变量 |
| 虽然 | 而 (expr) {} | 形成一个时间循环 |