终端按下向上方向键↑显示^[OA,iTerm2、IDEA终端均出现该异常
终端向上方向键输出
^[OA异常修复方案 现象说明
正常情况下终端按下↑向上方向键,应当直接调出此前执行过的历史命令。
当前异常表现如下:
- iTerm2、Intellij IDEA内置终端按下↑时,会直接显示
^[OA字符 - 按下↑显示
^[OA后直接按回车键,仍可正常执行对应的历史命令 - 按下↑显示
^[OA后先按CTRL+C,可正常查看到对应历史命令的完整内容
原因说明
该异常本质是终端进入了应用光标模式,方向键发送的控制序列和shell预期的常规模式序列不匹配,导致shell没有将序列识别为历史命令调取操作,直接转义输出了序列原文,实际历史命令匹配的逻辑本身没有问题。
修复方案
1. iTerm2 专属修复
- 打开iTerm2,进入
Preferences > Profiles > Keys > General设置页 - 找到「Cursor keys」配置项,选择Normal mode,取消选中Application mode
- 保存设置后重启iTerm2即可生效
2. Intellij IDEA 内置终端专属修复
- 打开IDEA设置,Windows/Linux路径为
File > Settings > Tools > Terminal,MacOS路径为IntelliJ IDEA > Settings > Tools > Terminal - 找到「Application Keypad」配置项,取消勾选
- 保存设置后重启内置终端即可生效
3. 全终端通用shell层面修复
如果上述终端配置修改后仍未生效,可直接在shell层面绑定方向键的控制序列,适配所有终端场景:
- 编辑当前用户的shell配置文件:bash用户编辑
~/.bashrc,zsh用户编辑~/.zshrc - 在配置文件末尾添加如下内容:
# 修复方向键输出转义序列异常 bind '"\eOA": previous-history' bind '"\eOB": next-history' bind '"\eOC": forward-char' bind '"\eOD": backward-char'
- 保存文件后执行
source ~/.bashrc(zsh用户执行source ~/.zshrc),配置即时生效
内容的提问来源于stack exchange,提问作者Peng Xiao
相关产品推荐
相关产品推荐

