背景

在 IntelliJ IDEA 内置终端中运行 Claude Code CLI 时,发送的消息会夹带奇怪的特殊字符或控制序列,导致输入内容显示异常,无法正常使用。

根本原因

JetBrains JediTerm(IDEA 内置终端)在 xterm-256color 模式下会向 stdin 注入额外的 ANSI 控制序列(如 Bracketed Paste Mode 的 \e[?2004h),Claude Code CLI 无法识别这些序列,将其当作普通输入内容处理,导致乱码。

此外,IDEA 的 Shell Integration 功能会注入 INTELLIJ_TERMINAL_COMMAND_BLOCKS=1,在命令前后插入用于终端分块高亮的控制字符,同样会干扰 Claude Code。

排查路径

第一步:确认终端环境变量

env | grep -i term

输出:

TERM=xterm-256color
TERM_SESSION_ID=...
TERMINAL_EMULATOR=JetBrains-JediTerm
INTELLIJ_TERMINAL_COMMAND_BLOCKS=1

发现两个可疑变量:

  • INTELLIJ_TERMINAL_COMMAND_BLOCKS=1:Shell Integration 注入的控制序列

  • TERMINAL_EMULATOR=JetBrains-JediTerm:JediTerm 的 xterm-256color 兼容性问题

第二步:关闭 IDEA Shell Integration

Settings → Tools → Terminal 中关闭 Shell Integration,重新检查环境变量:

TERM=xterm-256color
TERM_SESSION_ID=...
TERMINAL_EMULATOR=JetBrains-JediTerm

INTELLIJ_TERMINAL_COMMAND_BLOCKS 消失,但特殊字符问题依然存在,说明根源是 JediTerm 的 xterm-256color 模式。

第三步:验证降级 TERM 是否有效

TERM=xterm claude

特殊字符消失,问题解决。

解决方案

~/.zshrc 中添加 alias,使 claude 命令自动以 TERM=xterm 启动:

alias claude="TERM=xterm claude"

然后重新加载配置:

source ~/.zshrc

此后在 IDEA 终端中直接输入 claude 即可正常使用,无需每次手动指定环境变量。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐