MacBook Pro 2017(带Touch Bar)终端自动补全及方向键异常问题
解决macOS Sierra终端自动补全异常、方向键乱码问题
我之前帮不少用户排查过类似的终端输入异常问题,结合你的设备(2017款带Touch Bar的MacBook Pro + macOS Sierra),给你整理了几个针对性的解决方案,按顺序尝试即可:
1. 修复终端TERM环境变量配置
这种自动补全多字符、方向键出现^[[D^[[C乱码的问题,大多是终端类型配置错误导致的:
- 先打开终端,输入这条命令查看当前TERM值:
echo $TERM - 如果输出不是
xterm-256color或xterm,手动设置正确的终端类型:
设置完立刻测试自动补全和方向键,要是正常了,就得把这个设置永久生效:export TERM=xterm-256color- 如果你用的是bash(Sierra默认shell),编辑
~/.bash_profile:
把nano ~/.bash_profileexport TERM=xterm-256color加到文件末尾,按Ctrl+O保存,Ctrl+X退出,再执行source ~/.bash_profile让设置生效。 - 要是你切换到了zsh,就编辑
~/.zshrc,步骤和上面一样。
- 如果你用的是bash(Sierra默认shell),编辑
2. 重置终端应用的偏好设置
带Touch Bar的Mac偶尔会因为终端的偏好缓存出错导致异常:
- 先完全退出终端(右键Dock里的终端图标,选「退出」,别只是最小化)
- 打开访达,按
Shift+Command+G,输入~/Library/Preferences/,找到com.apple.Terminal.plist文件,把它移到桌面做备份 - 重新打开终端,此时会生成全新的默认偏好,测试问题是否消失。
3. 排查shell补全配置文件
如果是自动补全时额外加字符的问题,有可能是自定义的补全脚本出错了:
- 检查用户目录下的
~/.bash_completion文件,或者/etc/bash_completion.d/目录下的自定义补全脚本 - 可以先把
~/.bash_completion重命名为~/.bash_completion.bak,然后重启终端,测试补全是否正常。要是正常了,说明就是这个自定义脚本有问题,需要逐行排查里面的代码逻辑。
4. 排除Touch Bar快捷键冲突
因为你的Mac带Touch Bar,有可能是Touch Bar的快捷操作和终端输入冲突了:
- 打开「系统偏好设置」→「键盘」→「快捷键」→「Touch Bar」,暂时禁用所有和终端相关的Touch Bar快捷键,或者把Touch Bar设置为「显示F1、F2等功能键」,然后再测试终端输入是否正常。
如果以上方法都没解决,建议创建一个新的系统用户账户,在新账户里测试终端——要是新账户里终端正常,说明是原用户目录下的某个隐藏配置文件损坏了,你可以逐步排查用户目录下的隐藏文件(比如~/.bashrc、~/.profile这些)。
内容的提问来源于stack exchange,提问作者karvai




