从 VS Code 到 Zed:构建 FreeMarker 扩展,因为我需要它

发布: (2026年1月15日 GMT+8 20:37)
5 min read
原文: Dev.to

Source: Dev.to

几个月前,我从 VS Code 切换到了 Zed

并不是因为 VS Code 差——它仍然是一个很棒的编辑器——而是因为它慢慢变得……沉重。我的配置已经变成了一个由免费扩展、后台进程、增值销售以及“再来一个小帮手”组成的弗兰肯斯坦怪物,这不知怎么的让一切变慢了。

My VS Code setup: I feel thin, sort of stretched, like butter scraped over too much bread.

我想要一些:

  • 快速
  • 开源
  • 有主见的
  • 以最佳方式保持无聊

Zed 满足了所有条件。直到我必须开始使用 FreeMarker

FreeMarker 仍然活跃

如果你在 Java 或企业环境工作,你已经知道这一点。FreeMarker 并不时髦。它每周都不上 Hacker News。但它 无处不在

在我的案例中,我在一个集成 Keycloak 的项目中使用它,FreeMarker 模板仍然是定制流程的核心部分。所以是的——FreeMarker 已经很老了。也是的——它仍然至关重要。

这让下面这部分有点 痛苦

👉 Zed 没有 FreeMarker 支持。
没有语法高亮。
不理解指令。
什么都没有。

好吧,我自己来

“好吧,我自己来”时刻

Zed 足够快,一旦习惯了,再回去使用其他编辑器会感觉…不对。所以我没有再切换编辑器,而是想:

“写一个 FreeMarker 扩展到底有多难?”

(打开 tree‑sitter 语法之前的最后一句话。)

我已经知道 Zed 使用 tree‑sitter

  • 语法高亮基于语法文件
  • 扩展简洁且明确

我还有一个起点:一个 FreeMarker extension for VS Code。思路很简单:

  • 尽可能复用已有的
  • 根据需要进行适配
  • 在此过程中学习 Zed 的扩展模型

vibe‑coding 的帮助以及大量的反复试验下,我开始移植它。

实际的旅程(又称 tree‑sitter 现实检查)

有些事情比预期更容易:

  • Zed 的扩展模型清新简洁
  • Tree‑sitter 强迫你正确地思考结构
  • 没有魔法,没有隐藏层

有些事情……却不容易:

  • FreeMarker 语法以恼人的方式灵活
  • 指令、插值、嵌套表达式
  • 只有在把一切弄坏后才会注意到的边缘情况

从 VS Code 移植并不是复制粘贴的工作。更像是在两种不同的思维模型之间进行翻译。但说实话?正是这让它变得有趣。

The actual journey

结果:早期,但可用

它目前支持:

  • FreeMarker 语法高亮
  • 指令
  • 插值
  • 为进一步改进奠定坚实基础

它完美吗?不是。
它已经达到生产级别了吗?还没有。
足够好,能够每天使用而不讨厌你的编辑器 吗?绝对可以。

对于像 Zed 这样的编辑器来说,这已经算是一次胜利。

对 Zed 与小众工具的思考

Zed 给人的感觉像是为以下人群设计的编辑器:

  • 喜欢了解工具工作原理
  • 更倾向于少一些抽象层
  • 不介意自己动手构建缺失的功能

编写这个扩展让我想起了一件重要的事:开源的前进不仅靠大功能——它同样通过那些解决真实问题的小而无聊的小众工具得以成长。FreeMarker 并不酷。但仍然需要有人来维护它。

旅程的另一张快照

接下来是什么?

可能的下一步:

  • 更好的语法覆盖
  • 错误处理
  • 未来可能会有 LSP(不保证)

如果你:

  • 使用 FreeMarker
  • 使用 Zed
  • 喜欢玩转开发者工具

反馈、问题和 PR 都非常欢迎。有时最好的扩展源于一个简单的需求:

“我只想让我的编辑器能够理解这个文件。”

而这正是它诞生的方式 🚀

Back to Blog

相关文章

阅读更多 »