从 IDEA 转到 VS Code:Java 代码阅读与导航速查(原生键位)
写了多年 Java,IDEA 一直是我的主力。但这两年实际写代码的时间,被 AI 吃掉了一大半——我更多是在读:读 AI 生成的实现、读别人提交的 PR、读一个陌生模块怎么串起来的。
这个阶段 IDEA 的很多重量级能力(重构、Inspections、Database 工具窗)反而用不上,启动慢和内存占用却是实打实的。所以我把它换成了 VS Code。
这篇是我自己的迁移速查表,只覆盖读代码这条线:跳转、搜索、看结构。两件事先说清楚:
- 不装 IDEA 键位插件,直接学 VS Code 原生键位。Cursor / Windsurf / Copilot / Remote-SSH 全是这一套,学一次到处能用;而键位插件会让你永远看不懂别人的 VS Code 教程。
- 重构、生成代码、调试这些“改代码”的能力有另一套逻辑,这篇不写。
一、先装什么
| 扩展 | ID | 用途 |
|---|---|---|
| Extension Pack for Java | vscjava.vscode-java-pack |
一条装齐六件套:Language Support for Java(Red Hat / JDT LS)、Debugger、Test Runner、Maven、Gradle、Java 项目管理 |
| Spring Boot Extension Pack | vmware.vscode-boot-dev-pack |
Spring Boot Tools / Dashboard / Initializr |
| GitLens | eamodio.gitlens |
行内 blame、文件历史、提交图,替代 IDEA 的 Annotate |
Lombok 不用装插件,支持已内建在 Language Support for Java 里;@Slf4j 的 log 报红时,把 Lombok 升到 1.18.40 以上再跑一次 Java: Clean Java Language Server Workspace。
读的项目带别的技术栈时,再按需补装(都是可选,不装不影响上面的核心流程):
| 技术栈 | 扩展 | ID | 用途 / 取舍 |
|---|---|---|---|
| MyBatis | MyBatis Boost | young1lin.mybatis-boost |
Mapper 接口 ↔ XML 双向跳转、resultMap 导航,最接近 IDEA 里的 MyBatisX。社区插件、装机量不大,建议先在自己的项目里试用再留下;不装的兜底办法是 Ctrl+Shift+F 直接搜 XML 里的 statement id |
| MySQL / PostgreSQL | Database Client | cweijan.vscode-database-client2 |
看表结构对照实体、跑 SQL 验证。一个插件顺带覆盖 Redis / Mongo。注意 ID 结尾带 2,不带 2 的是旧版 |
| 仅 PostgreSQL | PostgreSQL for VS Code | ms-ossdata.vscode-pgsql |
微软官方,ER 图、查询计划可视化;只用 PG 的话可以二选一 |
| Docker | Container Tools | ms-azuretools.vscode-containers |
Dockerfile / compose 补全,侧栏看容器和日志。它取代了旧的 Docker 扩展(ms-azuretools.vscode-docker),需要 VS Code 1.109+ |
| Redis | Redis for VS Code | Redis.redis-for-vscode |
Redis 官方出品的 GUI + CLI;装了 Database Client 的话这格可以省略 |
.java 文件打开后右下角会出现 Java 图标,转圈消失代表索引完成。左侧栏应该能看到 JAVA PROJECTS、MAVEN(或 GRADLE)、OUTLINE、TESTING 四个折叠面板——这四个就相当于 IDEA 左侧的 Project / Maven / Structure 三个工具窗。
二、核心键位
最后一列是常用度:★★★ 的先练熟,读代码八成操作就够用了。
| 常用 | 操作 | Windows / Linux | macOS | 等价 IDEA |
|---|---|---|---|---|
| ★★★ | 按文件名打开 | Ctrl+P |
⌘P |
双击 Shift 选文件 |
| ★★★ | 按类名 / 符号打开 | Ctrl+T |
⌘T |
Ctrl+N |
| ★★★ | 全工程搜内容 | Ctrl+Shift+F |
⇧⌘F |
Ctrl+Shift+F |
| ★★★ | 跳到定义 | F12 / Ctrl+Click |
F12 / ⌘+Click |
Ctrl+B |
| ★★★ | 跳到实现(接口 → 实现类) | Ctrl+F12 |
⌘F12 |
Ctrl+Alt+B |
| ★★★ | 回退(跳错了往回走) | Alt+← |
Ctrl+- |
Ctrl+Alt+← |
| ★★★ | 当前文件的方法 / 字段列表 | Ctrl+Shift+O |
⇧⌘O |
Ctrl+F12 |
| ★★ | 跳到指定行 | Ctrl+G |
Ctrl+G(不是 ⌘G) |
Ctrl+G |
| ★★ | 查看被谁用 | Shift+F12 |
⇧F12 |
Alt+F7 |
| ★★ | 预览定义(不跳走) | Alt+F12 |
⌥F12 |
Ctrl+Shift+I |
| ★★ | 回到上次编辑的位置 | Ctrl+K Ctrl+Q |
⌘K ⌘Q |
Ctrl+Shift+Backspace |
| ★★ | 问题列表(编译错误) | Ctrl+Shift+M |
⇧⌘M |
Alt+6 |
| ★★ | 内置终端 | Ctrl+` |
⌃` |
Alt+F12 |
| ★ | 调用链(谁调我、我调谁) | Shift+Alt+H |
⇧⌥H |
Ctrl+Alt+H |
| ★ | 类继承树(父类 / 子类) | 右键 → Show Type Hierarchy | 同左 | Ctrl+H |
| ★ | 命令面板(万能入口) | Ctrl+Shift+P |
⇧⌘P |
双击 Shift |
几个容易踩的点:
- 跳到实现和跳到定义是两个键。
F12跳到接口/父类,Ctrl+F12才跳到实现,有多个实现时会弹列表让你选。 - 跳到指定行在 macOS 上也是
Ctrl+G,不是⌘G——⌘G是“查找下一个”,按错了会一直跳匹配项。 - 回退键位是 macOS 上的主要不适点:
Ctrl+-要小指加右手减号,第一周会难受,适应不了就在键盘快捷键界面自己换个键。 - 类继承树没有默认键位,只能用右键菜单,想一键弹出也在那儿自己绑一个。
- 调用链要先选中方法再按
Shift+Alt+H。
2.1 Spring 项目多出来的读法
装了 Spring Boot Extension Pack 之后,Ctrl+T 的搜索框里多了 Spring 专属的查询方式,读 Spring 工程基本就靠它:
| 输入 | 看到什么 | 典型场景 |
|---|---|---|
/ |
所有 request mapping:URL、请求方法、来源位置 | 拿着线上 URL 或日志里的路径找接口实现,比全局搜 @GetMapping 快得多 |
// |
所有运行中应用的 request mapping,选中直接开浏览器 | 本地起服务后验证接口通不通 |
两点实测经验:
- 前缀是
/,不要照抄官方文档里的@/:Ctrl+T(macOS⌘T)后直接敲/就是工程级的接口列表(输入框里实际显示为#/)。官方文档里的@+(查 Bean)同样进不来,找 Bean 直接敲 bean 名或类名就行。 - Live hover:应用跑起来后,源码里会出现浅绿高亮,悬停能看到运行时信息——这个 Bean 实际被谁装配、这个 mapping 拼出来的完整 URL 是什么。排查“代码里明明写了却 404”时很直观。
三、配置
配置全部收在这一节,和键位分开。下面两份二选一,整段粘进(或替换)用户 settings.json 就行,都是合法 JSON。懒得手写的话,把 这份配置清单 丢给 Cursor / Copilot / Claude Code,让 AI 帮你装扩展、写配置,最后照文档里的验收清单逐项核对。
3.1 基础版 settings.json
命令面板 → Preferences: Open User Settings (JSON),贴入:
1 | { |
3.2 完整版 settings.json(含阅读体验调优)
想要更好的阅读手感就用这份,它包括 3.1 的全部内容,再补上读代码相关的几项,直接整段替掉 3.1 那份:
1 | { |
参数名提示、悬停 Javadoc、多个跳转目标时弹窗选择这几项默认就是开着的,不用写进配置。
到这里从 IDEA 切到 VS Code 的阅读链路就通了:装 Java Pack(Spring 项目加 Boot Pack),把前面那张表里 ★★★ 的键位用熟,再贴上 3.1 或 3.2 的配置,跳转、搜索、看结构、搜接口这几件事都能顺手做完。
