当前位置: 首页 > news >正文

Ghostty SSH 连接 Ubuntu 时 Zsh 提示符异常与退格显示错乱排查

问题重述

本地使用 Ghostty,通过 SSH 登录 Ubuntu 服务器后,出现以下异常:

(base) ?➜  ~

正常情况下应为:

(base) ➜  ~

此外还有以下问题:

  • 提示符前面多出一个 ?
  • 按 Backspace 实际已经删除字符
  • 但屏幕显示没有同步更新
  • 删除时会不断留下空格
  • 输入命令时经常出现字符错位

例如:

echo $TERM_PROGRAM

实际显示可能变成:

echo $TERM_PROGRAMM

原因排查

第一反应:Ghostty Terminfo 缺失

登录服务器后:

echo $TERM

输出:

xterm-ghostty

继续检查:

infocmp xterm-ghostty

发现能够正常输出 terminfo。

不是没有添加 terminfo 导致的问题:

unknown terminal type

注:此问题需要从客户机上导出 terminfo 并导入到服务器上。

第二步:怀疑 Locale

检查:

locale

结果:

LANG=en_US.UTF-8

UTF-8 配置正常。排除 Locale 导致 Unicode 字符显示异常,和 locale 没有关系。

第三步:怀疑 Oh My Zsh

启动纯净 zsh:

exec zsh -f

问题仍然存在,排除 Oh My Zsh 主题配置问题。

第四步:怀疑 Ghostty 与 ZLE 兼容性

检查:

bindkey | grep backward-delete-char

输出正常:

"^H" backward-delete-char
"^?" backward-delete-char

检查:

stty -a | grep erase

输出:

erase = ^?;

也正常,但光标错位依旧存在。

第五步:发现异常线索

查看当前使用的 terminfo:

which infocmp
which tic
which tput

输出:

/var/conda/bin/infocmp
/var/conda/bin/tic
/var/conda/bin/tput

此时发现:当前激活的是 Conda。

继续查看:

infocmp xterm-ghostty

显示来源:

/var/conda/share/terminfo/x/xterm-ghostty

也就是说:

Conda 环境有 Ghostty 的 terminfo,但是系统环境里面没有。

退出 Conda:

conda deactivate
hash -r

再次执行:

infocmp xterm-ghostty

直接报错:

couldn't open terminfo file

第六步:验证是否为系统 Terminfo 问题

启动一个完全干净的 Bash:

env -i HOME=$HOME TERM=xterm-ghostty /bin/bash --noprofile --norc

测试输入和退格。

结果:输入、退格、光标均正常

说明:

  • Ghostty 本身正常
  • SSH 正常
  • 键盘协议正常

问题是系统根本就没装上 xterm-ghostty terminfo,被 conda 的 env 劫持装到 conda 环境里面去了。

最终解决

从本机导出 Ghostty terminfo:

infocmp -x xterm-ghostty > ghostty.terminfo

复制到服务器后安装:

mkdir -p ~/.terminfo
tic -x -o ~/.terminfo ghostty.terminfo

验证:

infocmp xterm-ghostty

输出:

/home/xuyang/.terminfo/x/xterm-ghostty

说明已经安装到用户级 terminfo 数据库。

重新登录 SSH。

问题全部消失:

(base) ➜  ~

Backspace、光标移动、输入显示均恢复正常。

原因总结

问题并不是 Ghostty、SSH、Locale、Oh My Zsh 或 ZLE 本身。根因是 Conda 自带的 terminfo 数据库存在 xterm-ghostty,但是系统的里面没有。

部分组件能找到、部分组件找不到 terminfo,最终导致 ghostty 下光标定位和行编辑行为异常。

安装到用户的 terminfo 目录之后,所有组件使用同一份 terminfo,问题解决。

备忘

以后在任何 Linux 主机首次使用 Ghostty 时,可以直接执行:

mkdir -p ~/.terminfo
tic -x -o ~/.terminfo ghostty.terminfo

避免再次踩坑。

http://www.rkmt.cn/news/1459449.html

相关文章:

  • Material Design 终极指南:15个开源Android应用设计技巧
  • 年省30万!杉山润滑油科技降本增效案例解析 - 速递信息
  • Qwen3.5-9B的MoE架构解析:混合专家模型在Ascend硬件上的终极优势指南
  • Vibe-Trading:赋予交易助手全面能力,多特性助力金融研究与交易!
  • Qt多窗口架构设计需求简介
  • 2026年笔记本维修全攻略,换屏幕换电池清灰重装系统一站解决 - 资讯焦点
  • 如何快速部署YI-1.5-9B:5步完成中文大语言模型本地安装
  • GPT2_PMC-openmind性能优化指南:提升医学问答准确率的3个技巧
  • 江苏省采购证书怎么选择怎么考?2026年CPPM注册职业采购经理报考全攻略(官方授权版) - 众智商学院课程中心
  • 2026 安庆全域工装甄选指南|迎江 / 大观 / 宜秀 / 桐城 / 怀宁 / 宿松全区域商铺、办公室、商场装修 3 家正规合规企业排行 + 本地装修避坑全攻略 - 本地便民网
  • WinUtil:一键解决Windows系统三大痛点的终极免费工具指南
  • 2026上海电脑回收优质服务商汇总及实用选择指南 - 榜单测评
  • 百度网盘解析工具:3步实现满速下载的高效方案
  • 如何使用ExcelJS实现高效的JSON与Excel数据交互:开发者必备指南
  • 辽宁省中级经济师工商管理/人力资源管理:适配人群、岗位匹配与备考全攻略 - 众智商学院课程中心
  • 2026一件代发公司哪家好?业内避坑干货,从仓储实力甄别正规代发企业 - 商业新知
  • 韶关六大回收品牌黄金上门回收实测测评 - 余生黄金回收
  • CFF Explorer.exe验证 DLL 导出的函数名
  • 船舶航向响应仿真C++代码:基于四阶RK法的Nomoto模型实现
  • 告别代码混乱!大型前端项目架构设计方案:分层解耦+规范目录,可直接落地
  • 绩效考核的致命漏洞:量化考核悖论如何催生无效内卷
  • PHP本地音乐网站源码包:带完整MySQL数据库、登录后台与百万级歌曲数据
  • Carnice-V2-27B未来展望:AI智能体模型的发展趋势与技术路线图
  • YOLO26#YOLO11重塑计算机视觉新格局 YOLO11与yolo26 差异 基于“YOLO11”与“YOLO26”构想的未来目标检测模型解析与实现
  • 佛山六大黄金回收门店:闲置金饰上门变现指南 - 余生黄金回收
  • 互联网大厂 Java 求职者面试:技术栈与幽默的碰撞
  • GPT-4.1系列实战指南:从编程协作者到边缘AI部署
  • 2026 广州黄金出手避坑|收的顶稳居优选,五家实体门店全测评 - 奢侈品回收评测
  • 别再手动找电影了!教你用Node.js + 豆瓣API + Telegram Bot打造个人电影推送机器人
  • 老旧小区屋面翻新,浅析当下常用防水工艺特点 - 玖叁鹿