使用 Zed 的不爽
因为比较喜欢 Zed 的高性能,就在 Zed 推出了编译调试功能后从 VS Code 切换到了 Zed 。但很快发现 Zed 有几点令我很不爽:一个就是编写 Golang 代码时函数的参数声明会作为占位符自动带出来,这样我每次都要手动删除带出来的参数声明,搞得有点不爽;另外一个就是 Zed 还不能像 VS Code 那样,在编写 HTML 代码时通过缩写自动填充代码片段(如:打一个英文感叹号回车就自动生成一个完整的 HTML 文件框架,打 .classname 就自动生成带这个类名的 DIV 等等)。
将就着用了一段时间,也尝试在 Reddit 之类的论坛上求助,但都没有结果。
人还是要靠自己
终于有时间闲下来,研究一下上述的问题能不能解决。
先是通过 Zed 的官网查找解决方法,但没有明确的关键字也没找到有用的信息,但发现了一点,就是 Zed 使用的是 Golang 官方的 LSP (Language Server Protocol)gopls ,就使用 “gopls 禁用参数占位符”作为关键字问 AI ,经过一番友好交流,终于是得到了想要的解决方法。
解决 Zed Golang 函数参数声明占位问题
只需要在 Zed 的 settings.json 中加入配置参数,即可禁用掉 gopls 的函数参数声明占位的问题:
"lsp": {
"gopls": {
"initialization_options": {
"usePlaceholders": false,
"completeFunctionCalls": true
}
}
}
- "usePlaceholders": false:禁用函数参数占位符,防止自动填充参数名和类型。
- "completeFunctionCalls": true:保留函数调用时的括号自动补全,并将光标置于括号内,符合大多数 IDE 的标准行为。
修改 settings.json 文件然后保存就即时生效,如果没有生效,就留意一下 settions.json 中的大括号、逗号之类是否合法。如果出现错误通常会在右下角有弹出提示。
HTML 快速编写
无意中了解到 VS Code 编写 HTML 代码时的快速填充代码片段的功能是调用了 Emmet 的语言服务协议,而 Zed 也有相应的功能,但没有默认集成(GitHub 上有 issue 说明这个功能将在未来默认集成),但目前也可以通过插件来实现。
打开 Zed 的插件安装界面,搜索 Emmet ,然后点击安装。安装后如果没有生效就重启一下 Zed 。这时候回到 HTML 代码编写界面,输入 div*3 然后回车,就会发现已经自动填充了3个 DIV 了。
真香
通过以上的配置解决了我目前最迫切的需求后,现在觉得 Zed 真香!
还可以更香
把这篇文章的内容录制了一下视频发布出来后,看到有些粉丝留言说 Zed 代码片段不够丰富,还比不上 VS Code 高效。如果单看 Zed 默认的配置,确实是这样的,但其实 Zed 是可以自定义代码片段的。
~/.config/zed/snippets
在 snippets 目前里可以新建开发语言对应的自定义代码片段配置,格式是 json 的,配置的格式在 Zed 的官网上有说明。
遗留问题
目前 Zed 处于快速迭代状态,还有不少小问题。比如:VS Code 默认可以直接按 F5 编译调试,并且会自动杀掉上一次在运行的进程,但 Zed 就只能手动杀掉上一次的进程等等。
这是我目前发现的最大的问题,在这里留个坑,看看 Zed 开发团队什么时候解决这个问题。