告别IDEA!Zed轻量编辑器高效Java开发调试教程
简介
这篇文章聚焦于从IDEA迁移到Zed的实际操作,包括配置、调试和注意事项。如果你想换个轻量级的编辑器来审核AI生成的代码,或者单纯觉得IDEA太重了,这里有些经验值得参考。
zed 界面
内存占用对比:
这是打开同一个项目代码但未进行run/debug时的内存及CPU占用对比。
(Zed进行run/debug的话额外加了500多MB的JDK进程占用)
文章目录
- 简介
- zed 界面
- 内存占用对比:
- 前言
- 趋势
- 性能和功能问题
- 寻找轻量替代
- 体验评价
- 正文
- 指定zed的ja va_home
- 安装ja va lsp(语言支持服务)相关插件
- 信任项目
- debug配置
- launch方式直接启动配置
- ???? attach方式启动配置(推荐!!)
- 查看lsp运行状态
- debug
- 设置自动保存
- 补充:不同项目目录使用不同的jdk、ma ven
- 已知问题:
前言
趋势
不得不说,随着AI原生开发的流行,IDEA多少有点跟不上了。很多AI开发插件要么只支持VSCode,要么在JetBrains上提供半成品。各大AI IDE基本都基于VSCode改造而来,JetBrains自己推出的AI智能体和组件,社区评价也是褒贬不一。
而Claude Code和OpenAI的Codex越来越火,手写代码的古法编程时代正在慢慢过去。新趋势很明显:代码开发越来越不依赖IDE,开发者的角色从手工敲击键盘编写大部分代码,逐渐转向把关AI编码结果的审核者。
性能和功能问题
IDEA在AI时代落后是一方面,对远程SSH开发的支持不佳、每个版本都在疯狂增加的内存占用是另一方面。很难想象,32GB内存的电脑打开IDEA 2026.1,居然能经常遇到UI冻结和点击卡顿。现在的IDEA已经是个不折不扣的内存毒瘤。
寻找轻量替代
既然如此,不如找找其他能阅读代码的轻量替代?VSCode本身是代码编辑器,但看看网上反馈:安装语言LSP和各种插件后,动不动就是几个G的内存占用,对代码审核来说还是太重了,这个方案也pass了。
同时了解到很多开发者转向使用AI轻量编辑器Zed(非基于VSCode架构)。它支持登录自己的ChatGPT官方订阅账号进行AI开发,无需向Zed额外付费(AI开发部分本文不展开)。虽然找的是轻量编辑器,但作为开发者,还是希望它支持代码跳转,免得每次查看调用实现都要全局文本搜索。如果还能支持项目启动甚至断点调试,那就更完美了。
巧了,Zed本身支持常见编程语言插件、LSP(语言支持服务)以及debug。对比了几款其他工具的优缺点和上手难度,最终决定用Zed作为审核AI交付代码的编辑器。
体验评价
经过试验,目前几乎可以完美解决审阅代码、降低内存占用和断点调试的需求。体验下来就三个字:超丝滑。
不过从IDEA迁移到Zed,确实有一些上手门槛。下面就把踩过坑后的使用教程分享给各位。
正文
指定zed的ja va_home
在 ~AppDataRoamingZedsettings.json 中指定Zed的ja va_home,需要JDK 21以上(如果不设置到操作系统的环境变量的话)。
{ "lsp": {"jdtls": {"settings": {"ja va_home": "G:microsoft-jdk-21.0.11+10", }, },},}
安装ja va lsp(语言支持服务)相关插件
Ja va代码跳转、运行、debug等Ja va支持需要安装Zed的Ja va插件,同时还要安装jdtl(Eclipse维护的Ja va语言服务器),以及新版本jdtl正常启动需要的Python。如果没装Python,百度一下怎么安装(超简单,略)。
安装Ja va插件,安装完等待Zed自己下载jdtl(装好Ja va插件后左下角会提示下载jdtl中)。
PS:截图中第二个“Ja va with Eclipse JDTLS”会到GitHub下载jdtl,但GitHub会禁止非登录下载,所以不装这个插件
。或者离线下载好jdtl的tar.gz(不区分系统)后解压,将jdtl的bin目录放入系统path,再到Zed扩展中安装Ja va插件(以免Zed自己去下载jdtl)。
jdtl包下载地址(此步最好具备良好访问国外网络的网络环境):
https://download.eclipse.org/jdtls/milestones/
操作系统中安装Python。不确定如果由Zed自动安装jdtl是否会同时装Python,但手动安装最新版jdtl后,jdtl.bat启动脚本里是需要调用Python的。没有Python的话,Zed中jdtl服务无法启动。然后再安装Ja va插件。
信任项目
首次打开的项目需要信任后,才能加载已安装的LSP服务、保存项目设置和使用MCP等。
点击左上角“Restricted Mode”,在弹出的框中点“Trust”。或者勾选设置,让Zed默认信任所有打开的新项目。
debug配置
在Ja va项目的项目目录下建立 .zed 文件夹,在其中新建 debug.json。
launch方式直接启动配置
(debug看不到变量,但可以用日志断点看,暂不推荐这种启动方式)增加如下配置:
[{ "adapter": "Ja va", "request": "launch", "label": "Debug CySupportBpApp", "mainClass": "com.yunmai.CySupportBpApp", "cwd": "$ZED_WORKTREE_ROOT", "vmArgs": "-Dfile.encoding=UTF-8 ", },]
???? attach方式启动配置(推荐!!)
示例:
{ "adapter": "Ja va", "request": "attach", "label": "Attach Ja va 5005", "hostName": "127.0.0.1", "port": 5005, }
Ja va项目在PowerShell启动脚本如下:
& "G:/jdk-1.8/bin/ja va" `"-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005" `"-Dfile.encoding=UTF-8" `"-cp" `"target/classes;target/dependency/*" `"com.example.admin.Application" // 此处替换为Ja va项目主类全路径
Ma ven编译target:
mvn compile
首次编译及依赖改变后,还需执行:
mvn dependency:copy-dependencies
拷贝三方jar包到 target/dependency/,方便Ja va使用 target/classes 启动。后续代码和资源文件改变,若依赖项没有改变,只需使用 mvn compile 命令即可。
查看lsp运行状态
????安装Ja va插件和jdtl LSP后,重新打开的项目需要打开Ja va文件才会启动jdtl LSP。Zed中,LSP是按项目加载的。需要查看当前项目jdtl LSP状态为 running,才能进行Ja va语言支持及项目启动等。
点击左下角⚡标志查看LSP状态。starting 代表启动中,running 才是启动完毕。
debug
???? 启动了jdtl LSP才能run/debug启动Ja va项目。点击debug面板的“new session”或“+”号,然后选择配置 debug.json 启动项目。
设置自动保存
IDEA有一个特别的默认设置就是会自动保存,常年使用IDEA的开发者一般不会手动保存。Zed默认是关闭的,如果想保留这个体验,可以在设置中搜索“auto Sa ve”进行变更。
支持定时、焦点变更、窗口变更三种方式触发自动保存,选一种喜欢的即可。
补充:不同项目目录使用不同的jdk、ma ven
如果你的项目JDK不是Zed所需的JDK 21,或者不同项目有不同的JDK、Ma ven,请参考这篇文章:Windows和Linux如何在命令行下让不同目录使用不同的JDK、Ma ven及其他软件环境。
已知问题:
-
Launch启动无法查看debug时的变量,但断点可以停留,也支持日志断点(在断点上写日志表达式,把要看的变量打印出来)。Attach到Windows或WSL2启动的项目反而能看到变量,挺奇怪的。推测是Launch编译时的JDK版本不匹配项目,因为Zed要求必须JDK 21,但Launch方式启动时没法单独指定JDK;另外Windows下命令行的Ma ven编译时默认只能使用系统变量的JA VA_HOME,可能这里和项目所需JDK不一样,还可能是系统有多个Ma ven的情况等等。除此之外说不定是当前版本的Ja va插件、jdtl本身的问题,所以不推荐用Launch。
-
Zed自带的debug terminal(指debug界面的terminal,另一个独立terminal面板是可以设置的)没有查找快捷键可设置,目前暂未找到改动其编码的方法,默认使用GBK。两种解决方案:一是本地debug时配置输出到日志文件;二是用操作系统的terminal(也可以在Zed的独立terminal面板集成这个系统terminal)启动Ja va项目,Zed用attach方式启动。