怎么在Zed里面快速把go项目跑起来
写 Go 代码最烦的瞬间是什么?不是忘记处理err,也不是被 GC 折磨,而是你刚写完一个TestCacheBuster函数,正想在终端里敲下go test ./http/middleware -run TestCacheBuster,却发现自己的手速比编译器的报错还慢。更惨的是,如果你在 VS Code 里用着默认快捷键,可能还要面对一堆“点击运行”的弹窗,最后发现它跑的根本不是你指的那个文件。
而我最近发现在zed里面可以非常方便的把go项目跑起来,我的第一反应是:“好家伙,这终于像一个正经 IDE 了。”
Zed 的 Go 语言支持加上了内置的可运行任务(Runnables)。简单来说,以后你在 Zed 里对着 Go 代码,再也不用切终端手打命令了。它会自动帮你生成下面这四种“跑法”:
go test $ZED_GO_PACKAGE -run $ZED_SYMBOL—— 单独跑某个测试函数(比如你光标停在哪个 Test 函数上,就只跑那一个)。go test $ZED_GO_PACKAGE—— 跑当前这个包里的所有测试。go test ./...—— 跑整个项目里的所有测试,一键全绿(或者全红)。go run $ZED_GO_PACKAGE—— 如果当前包里有main函数,直接帮你跑起来。
这看起来是个小功能,但对 Go 开发者来说,它解决的是**“每天高频重复切窗口”的肌肉记忆痛点**。你可以在代码里直接点击测试函数旁边的运行按钮,看着终端输出结果,修改代码,再点一次。整个过程不用离开编辑器,就像在玩一个“编译-测试-修正”的闭环小游戏。
下面是运行一个main.go的例子,有点idea的感觉
下面是跑test的例子
当然,这个 新特性也暴露了一些很有意思的“真实世界”问题,让这个功能显得不那么完美,但又非常接地气。
比如 有网友抱怨说:“这玩意儿看起来很有用,但我的 shell 是fish,跑测试直接报错了!” 报错信息非常有画面感:fish: Variables cannot be bracketed...。因为 Zed 生成的任务命令里带着${ZED_CUSTOM_GO_PACKAGE}这种花括号变量,而 fish shell 对花括号的处理方式不一样。
zed回复说,这其实是个已知问题 ,需要做的是把任务的执行 shell“钉死”成特定的 shell,才能让 fish 等用户正常使用。
另一个 网友则问了个更实在的需求:“能不能给go test加自定义参数?比如我想跑go test -v -count=1 ...怎么办?” 这个问题把大家拉回了现实——内置任务只是起点,离“完全替代终端”还差得远。
不过,这并不妨碍这个 新特性成为一个值得庆祝的里程碑。它标志着 Zed 这个新兴编辑器正在从“炫酷的代码编辑界面”向“能真正干活的工程工具”进化。毕竟,一个连测试函数都不能一键跑起来的编辑器,再好看也只是个花瓶。