跳到主要内容
返回时间线

JetBrains 把内置终端换成 libghostty:Shift+Enter 换行、主题跟随、转义序列不再乱码

核心概要

JetBrains 从 2026.3 版本起把 IDE 内置终端的终端仿真层从沿用多年的 JediTerm 换成 libghostty,即 Ghostty 背后的终端仿真库。此前 JediTerm 不支持 Kitty 键盘协议等现代协议,AI 编程智能体、Neovim、tmux 这类全屏工具在终端里体验与独立终端有差距。新引擎接管转义序列解析与终端状态,IDE 仍负责渲染和上层集成,并处理了 JediTerm 忽略或误读的近 50 个控制序列。

Source-provided article image: The Terminal in JetBrains IDEs Now Runs on libghostty
blog.jetbrains.com

深度剖析

JetBrains IDE 的内置终端改用 libghostty 做终端仿真,解析和终端状态由这个库接管,渲染与上层功能仍留在 IDE 一侧。 此前内置终端依赖 JediTerm,而 TUI 应用越来越依赖 JediTerm 从未支持的现代协议,体验与其它终端不完全一致。 JetBrains 称新引擎处理了 JediTerm 忽略或误读的近 50 个控制序列,并点名 REP、冒号分隔的 SGR 颜色、未知 APC/SOS/PM 字符串等具体例子。

键盘输入现在能区分 Enter、Shift+Enter 与 Ctrl+Enter,也能接收按键释放和重复事件,多行提示和组合快捷键按文档所述工作。 旧终端无法区分这些组合,Shift+Enter 需要靠一个发送 Esc+CR 的设置来凑出换行。 该能力来自 Kitty 键盘协议,Claude Code、Codex、Pi、fish 和 Neovim 都在用;终端同时支持 Vim 使用的 xterm modifyOtherKeys,旧设置已不再需要并被忽略。

终端会按当前 IDE 主题回答明暗查询,并在主题切换时发出通知,多数订阅该通知的工具随 IDE 自动换色。 过去切换 IDE 到深色模式后,终端应用只能靠猜,常出现深底深字或深色 IDE 里亮色配色,除非逐个工具手工配置。 终端回答 CSI ? 996 n 查询并通过 mode 2031 发送切换通知,Claude Code、OpenCode、Pi、Neovim 和 tmux 订阅这些通知;此外还回答 OSC 4 调色板查询和 Kitty OSC 21 颜色查询。

启示与展望

这次变更的适用范围是 JetBrains IDE 从 2026.3 起的内置终端,该引擎在 2026.3 EAP 构建中已默认开启,并将延续到 Beta、Release Candidate 和稳定版;遇到问题时可通过 Registry 关闭 terminal.use.ghostty.emulator 退回 JediTerm。

JetBrains 表示 libghostty 已解析许多 IDE 尚未响应的序列,包括 OSC 52 剪贴板、桌面通知、ConEmu 进度条、Kitty 图形和带样式的下划线,这些功能目前只有解析一侧就绪。