The JetBrains Blog

The Terminal in JetBrains IDEs Now Runs on libghostty

6.9内容质量

TL;DR · AI 摘要

The Terminal in JetBrains IDEs Now Runs on libghostty - The JetBrains Blog JetBrains Platform Plugin and extension devel...

核心要点

  • 主题聚焦:The Terminal in JetBrains IDEs Now Runs on libgh
  • 来源:The JetBrains Blog,建议结合原文判断细节。
  • AI 分析暂不可用,本条为保底评分与摘要。
#AI#编程#后端#产品
打开原文

JetBrains IDE 中的终端现在基于 libghostty 运行 - JetBrains 博客

JetBrains 平台

JetBrains 产品的插件和扩展开发。

关注

  • 关注:
  • X X
  • RSS RSS

前往市场

IntelliJ 平台

新闻

JetBrains IDE 中的终端现在基于 libghostty 运行

Ekaterina Valeeva

越来越多的终端操作现在通过比传统 shell 提示符更强大的工具完成:如 Claude Code 和 Codex 的 AI 编码代理、Neovim 和 tmux 这类全屏应用、系统监控和仪表盘。这些工具依赖现代终端协议,而当前最好的独立终端正是基于此类协议构建。

从 2026.3 版本开始,JetBrains IDE 内置终端现在也使用相同的语言进行通信。它基于 libghostty 运行,这是 Ghostty 终端本身所依赖的终端模拟库。

许多项目已经集成了 libghostty,该库被广泛认为是可靠且高性能的实现,因此我们选择了它而不是其他备选方案。

在我们的 IDE 中,libghostty 取代了我们多年来依赖的 JediTerm 终端模拟器。随着 TUI 应用对现代协议的依赖增加,而 JediTerm 从未支持这些协议。这种差距过去只是造成轻微不便,因为体验与其它终端不完全一致,但尚未严重到需要提交错误报告的程度。现在 libghostty 负责处理终端解析和状态管理,而 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 自动切换主题。

终端还支持 OSC 4 调色板查询和 Kitty OSC 21 颜色查询,以及 JediTerm 已经支持的 OSC 10/11 查询。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 的引擎已经在 2026.3 EAP 版本的 IDE 重构终端中默认启用,并且在 Beta 和 Release Candidate 版本以及稳定版本中将保持此状态。

如果出现问题,你可以切换回 JediTerm:前往帮助 | 查找操作,打开注册表…,然后关闭 terminal.use.ghostty.emulator。如果你能通过 IJPL-218849 留言或提交错误报告告诉我们发生了什么,我们将不胜感激。

感谢 Ghostty

在整个过渡过程中,Ghostty 团队一直积极参与并给予支持。非常感谢 Mitchell Hashimoto、Tim Culverhouse 和所有 Ghostty 贡献者。你们将 libghostty 构建为可重用的库,并在我们集成时持续改进它。在过去几个月中,libghostty 还增加了 JediTerm 用户依赖的功能,这使得切换成为可能。我们很高兴能够基于你们的工作进行开发,并期待未来做出回馈。

智能代理开发

终端

  • 分享
  • Facebook
  • Twitter
  • 领英

上一篇

你能将 Maven 烘焙进神经网络吗?