JetBrains IDE 内置终端改用 libghostty 引擎
JetBrains IDEs are now powered by libghostty
JetBrains 宣布从 2026.3 版本起,IDE 内置终端由 JediTerm 换成 Ghostty 背后的终端模拟库 libghostty,IDE 仍负责渲染和上层集成。
如今,你的终端工作越来越多地通过一些工具来完成,这些工具对终端的要求远超以往 shell 提示符所能承载的范畴:像 Claude Code 和 Codex 这样的 AI 编码代理、像 Neovim 和 tmux 这样的全屏应用,以及系统监视器和仪表盘。这些工具依赖现代终端协议,而当今最好的独立终端正是构建在这些协议之上。
从 2026.3 版本开始,JetBrains IDE 的内置终端也使用同样的协议。它现在运行在 libghostty 之上,这是驱动 Ghostty 本身的终端仿真库。
许多项目已经嵌入了 libghostty,它被广泛认为是一个可靠、高性能的库,因此我们选择它,而不是我们考虑过的其他选项。
在我们的 IDE 中,libghostty 取代了 JediTerm,这是我们多年来依赖的终端仿真器。TUI 应用越来越依赖 JediTerm 从未支持过的现代协议。这一差距感觉更像是小不便,因为体验与其他终端并不完全一致,但还不足以构成需要报告 bug 的干扰。现在,libghostty 在我们的 IDE 中接管解析和终端状态,而 IDE 仍然负责渲染以及更高级的功能和集成。
以下是这些变化在实际使用中的意义。
多行提示符和键位绑定按文档所述工作
借助对 Kitty 键盘协议的支持,终端应用现在可以区分 Enter、Shift+Enter 和 Ctrl+Enter,并且可以请求按键释放和重复事件。像 Claude Code、Codex 和 Pi 这样的 CLI AI 代理,以及 fish shell 和 Neovim 等应用,都使用这一协议。终端还支持 xterm 的 modifyOtherKeys,这是 Vim 使用的一种较旧的键盘协议。
对你来说,这意味着 Shift+Enter 会在提示符中开始新的一行,而不是发送一条写了一半的消息,并且将 Ctrl、Shift 或 Alt 与其他键组合的快捷键会完整地传递给应用。基于终端的编辑器和工具会按预期响应,无需调整 IDE 设置。过去在 Shift+Enter 时发送 Esc+CR 的旧设置已不再需要,并会被忽略。
你的工具会跟随 IDE 主题
过去将 IDE 切换到深色模式会让终端应用无所适从,除非你手动配置每个工具,否则最终会出现深色背景上的深色文字,或者深色 IDE 中的明亮配色方案。
现在,终端会根据当前 IDE 主题回答深色/浅色查询(CSI ? 996 n),并在你切换时通过模式 2031 发送通知。Claude Code、OpenCode、Pi、Neovim 和 tmux 会订阅这些主题变更通知,因此其中大多数会随 IDE 自动切换。
除了 JediTerm 已经处理的 OSC 10/11 查询之外,终端还会回答 OSC 4 调色板查询和 Kitty OSC 21 颜色查询。OpenCode 和 Pi 会读取调色板,Junie CLI 会询问终端是深色还是浅色。程序现在可以通过 OSC 4 设置扩展调色板颜色 16 到 255,而颜色 0 到 15 仍由 IDE 主题控制。
具有丰富输出的终端应用现在绘制得更好
AI 代理、系统监视器、文件管理器和仪表盘的表现取决于渲染它们的终端。新引擎处理了近 50 个 JediTerm 忽略或误读的控制序列。以下是你可能遇到过的一些:
- REP(
CSI Ps b):ncurses 将其用于 7 个或更多相同字符的连续出现,因此以前某些行在渲染时会缺少字符。 - 以冒号分隔的 SGR 颜色(
38:2::r:g:b):JediTerm 会打印出冒号,并把数字合并到错误的属性中。 - 未知的 APC、SOS 和 PM 字符串:JediTerm 会将它们作为文本打印。现在它们会被静默丢弃。
此外还支持左/右边距(DECSLRM)、保护区域、制表位控制、插入模式、XTSAVE/XTRESTORE、Kitty CSI 22 J 滚动并清除,以及 X10 鼠标报告。光标闪烁模式(?12)现在会被遵循;此前光标始终闪烁。还有更多内容——要查看受支持的转义序列的完整列表,请参阅此表。
总结:线条、边框和分隔符不再出现断裂,彩色输出不再显示多余的冒号或错误的颜色,残留的不可见代码不再显示为乱码文本。
而这仅仅是开始
libghostty 库已经解析了许多 IDE 尚未处理的序列:OSC 52 剪贴板、桌面通知(OSC 9/777)、ConEmu 进度条、Kitty 图形,以及带样式和颜色的下划线。解析不再是瓶颈。只剩下 IDE 一侧的工作,因此可以期待这些功能比 JediTerm 时代更快到来。
在实践中,这一基础涵盖了你可能从独立终端中了解的功能:从远程服务器上运行的程序复制到剪贴板、在终端中的应用完成任务时收到通知(例如,Claude 完成处理提示并等待你输入)、查看长时间任务的进度条,以及直接在终端中显示图像。
立即试用,2026.3 中默认启用
基于 libghostty 的引擎已在你的 IDE 的 2026.3 EAP 构建中重新设计的终端里默认启用,并将在 Beta 和 Release Candidate 构建以及稳定版中保持这一状态。
如果出现问题,你可以切换回 JediTerm:转到帮助 | 查找操作,打开注册表…,然后关闭 terminal.use.ghostty.emulator。如果你还能在 IJPL-218849 上留言或提交错误报告告诉我们发生了什么,我们将不胜感激。
感谢 Ghostty
Ghostty 团队在整个过渡期间一直积极参与并给予支持。非常感谢 Mitchell Hashimoto、Tim Culverhouse 以及所有 Ghostty 贡献者。你们将 libghostty 构建为可复用的库,并在我们集成期间不断改进它。在过去几个月中,libghostty 还获得了 JediTerm 用户所依赖的功能,这使得切换成为可能。我们很高兴能在你们的工作基础上继续构建,并期待回馈贡献。
了解更多
来源:Hacker News · blog.jetbrains.com