在从 IDEA 切到 Trae / VS Code 系编辑器后,最明显的不适应之一就是:很多 IDEA 里顺手的“业务跳转能力”没有了。
比如:
- 根据 API 路径快速定位 Spring Controller 方法
- Mapper 接口和 XML 之间互跳
- Service / Impl / Mapper 之间业务链路跳转
- 多个 Spring Boot 模块组合启动
- Vue 中通过 @/ 别名 import JS 配置时, Ctrl + 鼠标左键 跳转到导出定义
- 在 JS / TS 文件中反查哪些 Vue 文件引用了当前导出
这些能力单独看都不复杂,但组合起来对日常开发效率影响很大。所以基于 Trae / VS Code 插件机制做了一个本地开发增强插件: yiyang-smart-jump 。
插件仓库:
- Gitee: https://gitee.com/duanzhaixing/vscode-local-plugin
一、插件解决了什么问题
这个插件主要围绕三个方向做增强:
1. Java 后端智能跳转
后端项目里,常见开发链路是:
IDEA 对这些跳转支持比较好,但 Trae / VS Code 默认更多依赖语言服务。遇到项目结构复杂、Mapper XML、多模块工程时,体验会弱一些。
插件补充了这些能力:
- Controller 中调用 Service 方法时跳到 Service / Impl
- Service 接口和 Impl 互跳
- Impl 中调用 Mapper 方法跳到 Mapper 接口
- Mapper 接口方法跳到 Mapper XML
- Mapper XML 的 id 反跳回 Mapper 接口方法
2. API 路径搜索跳转
这是参考 IDEA RestfulToolkit 体验做的功能。
按快捷键:
输入接口路径,例如:
插件会扫描 Spring Controller:
- @RequestMapping
- @GetMapping
- @PostMapping
- @PutMapping
- @DeleteMapping
- @PatchMapping
然后拼接类上的路径和方法上的路径,直接跳转到对应 Controller 方法。
这个功能不依赖项目启动,是静态扫描,所以适合本地快速定位接口实现。
3. Vue / JS import 跳转和反查
Vue / uniapp 项目里经常会写:
原本 Trae 里这种 @/config/app.js 不一定能稳定跳转,尤其是 .vue 文件里的别名路径。
插件现在支持:
- 在 .vue 中 Ctrl + 鼠标左键 跳转 JS / TS 导出
- 支持 @/ 别名
- 支持相对路径:
- ./xxx
- ../xxx
- 支持:
- .js
- .ts
- .vue
- index.js
- index.ts
- 支持命名导出:
- export const xxx = ...
- export function xxx() {}
- export class Xxx {}
- 支持默认导出跳转:
- export default ...
同时,在 JS / TS 文件中,插件会给导出变量加 CodeLens:
- export default ...
点击后可以反查有哪些 .vue 文件 import 了当前导出。
例如:
点击 查找 Vue 引用 后,会列出引用它的 Vue 文件,并可直接跳转。
二、组合启动能力
除了跳转,插件还实现了本地多模块 Spring Boot 组合启动。
支持能力
- 扫描 @SpringBootApplication
- 保存常用启动模块组合
- 一键启动已保存组合
- 一键 Debug 已保存组合
- 停止全部由插件启动的模块
- Maven 清理 / 编译 / 清理并编译
- 支持多项目工作区
对于多个项目放在同一工作区的场景,插件不会简单假设工作区根目录就是 Maven 根目录。
插件会:
- 根据模块所在位置寻找最近的 pom.xml
- 继续向上识别 Maven 聚合根
- 按不同 Maven 聚合工程分组执行 Maven 命令
- 避免把不同项目的模块混在一个 mvn -pl 里执行
三、Profile 处理优化
组合启动时,profile 是一个很容易出错的点。
典型问题包括:
- 默认选择了错误 profile
- 把某个项目的 profile 套到另一个项目
- 某些模块被默认强制选中
- 多项目工作区下 profile 混用
插件现在做了优化:
1. 不再默认强制选择某些模块
只有用户保存过的模块才会默认勾选。
避免出现:
2. Profile 默认不自动乱选
如果用户选择“不指定 profile”,插件会根据模块规则处理,或者不强行指定。
这样可以避免不同项目之间 profile 混用。
四、实现方式概览
插件主要使用 VS Code Extension API 实现。
核心能力包括:
1. DefinitionProvider
用于实现 Ctrl + 鼠标左键 跳转。
插件注册了这些语言:
对应能力:
2. CodeLensProvider
用于在 JS / TS 文件中显示:
当用户点击时,插件会扫描工作区内的 .vue 文件,解析 import 语句,然后判断是否引用了当前 JS / TS 导出。
3. Command
插件注册了多个命令,例如:
其中 API 搜索跳转绑定了快捷键:
五、使用体验
API 跳转
- 按:
- 输入接口路径:
- 回车跳到 Controller 方法。
Vue import 跳转
在 Vue 文件中:
按住:
点击 appId ,可以跳到:
JS / TS 反查 Vue 引用
在 JS / TS 文件中:
上方出现:
点击后列出所有引用它的 Vue 文件。
组合启动
在 Trae 命令面板执行:
选择要启动的 Spring Boot 模块,保存后可以直接:
六、推荐搭配插件
这个本地插件主要解决“业务跳转”和“组合启动”问题,建议搭配下面这些插件一起用。
1. Vue - Official
适合 Vue 3 / 项目。
推荐理由:
- Vue 语法高亮
- 模板类型提示
- 组件提示
- .vue 文件语言服务支持
如果做 Vue 3 / uniapp,建议必装。
2. TypeScript Vue Plugin / Vue Language Features
如果项目里 TS 比较多,建议配合 Vue 官方语言服务使用。
推荐理由:
- 改善 .vue 中 TS 类型推导
- 改善组件 props / emits 类型提示
- 对 更友好
3. ESLint
前端项目建议安装。
推荐理由:
- 统一代码规范
- 提前发现未使用变量、错误 import、语法问题
- 配合保存自动修复,减少格式问题
4. Prettier
适合统一前端格式。
推荐理由:
- 自动格式化 Vue / JS / TS / JSON / CSS
- 减少团队格式差异
- 和 ESLint 搭配比较常见
5. Spring Boot Extension Pack
后端 Spring Boot 项目推荐安装。
推荐理由:
- Spring Boot 项目识别
- Java 启动 / Debug 支持
- 配置文件提示
- Spring Boot Dashboard
本地插件负责业务链路跳转,Spring Boot Extension Pack 负责基础 Java / Spring 能力,两者互补。
6. Maven for Java
Maven 多模块项目建议安装。
推荐理由:
- Maven 项目识别
- Maven 生命周期操作
- 依赖树查看
- 和 Java Extension Pack 配合更好
7. GitLens
如果经常看历史代码,推荐安装。
推荐理由:
- 查看每行代码是谁改的
- 查看提交历史
- 对排查历史问题很有帮助
8. Path Intellisense
前端项目可选。
推荐理由:
- 路径自动补全
- 对相对路径 import 体验更好
不过对于 @/ 别名路径,仍然依赖项目配置和语言服务。本地插件已经补充了 @/ 跳转能力。
七、为什么不用完全依赖现成插件
现成插件能解决一部分通用问题,但实际业务项目往往有自己的复杂度:
- 多项目放在一个工作区里。
- 后端存在多个 Maven 聚合工程。
- 不同项目的 profile 规则不一样。
- 前端存在 @/ 别名和跨端目录。
- 需要 IDEA 风格的“按业务路径跳转”,而不是单纯语言服务跳转。
- 需要组合启动时只启动用户选择的模块,不能强制带上某些模块。
所以最终更适合做一个本地定制插件,把常用业务动作固化进去。
八、目前插件已实现能力清单
Java 后端
- Java 方法智能跳转
- Controller -> Service / Impl
- Service -> Impl
- Impl -> Mapper
- Mapper -> XML
- XML -> Mapper
- API 路径搜索跳转 Controller 方法
Spring Boot 组合启动
- 扫描启动类
- 配置模块组合
- 启动已保存组合
- Debug 已保存组合
- 停止组合
- Maven 清理 / 编译
- 多 Maven 聚合工程分组执行
- 多项目工作区支持
- Profile 按模块处理
Vue / JS / TS
- Vue import 跳转 JS / TS / Vue 文件
- 支持 @/ 别名
- 支持相对路径
- 支持命名导出跳转
- 支持默认导出跳转
- JS / TS 中反查 Vue 引用
- CodeLens 显示 查找 Vue 引用
九、后续可以继续增强的方向
后续还可以继续扩展:
1. 支持 import 多行写法
2. 支持 require() 跳转
3. 支持 Vue 组件引用反查
4. 支持 API 常量反查
5. 支持 Controller API 路径常量拼接
6. 支持缓存扫描结果
大型项目里,频繁全量扫描会有性能损耗。后续可以增加缓存和增量更新机制,提升搜索体验。
总结
这个插件不是为了替代语言服务,也不是为了替代成熟插件,而是补齐实际业务开发中的高频动作。
它解决的是这些问题:
- 后端业务链路跳转不顺
- API 路径定位 Controller 不方便
- 多模块 Spring Boot 启动麻烦
- 多项目工作区 Maven / profile 容易混乱
- Vue import 到 JS / TS 配置跳转不稳定
- JS / TS 配置不知道被哪些 Vue 页面引用
对于 Java + Vue 3 + uniapp + 多 Maven 项目的开发场景,这类本地插件非常适合做定制增强。
评论区