修复 Ubuntu VPS 中 Backspace 变成空格的问题(kitty + SSH)
在连接 VPS 时,终端键位映射经常会出现一些奇怪的问题。最近我在使用 ArchLinux kitty 终端通过 SSH 连接到一台全新的 Ubuntu 20.04 VPS 时,遇到了一个非常“离谱”的现象:
Backspace(退格键)按下后,不是删除文字,而是输入空格。
这类问题并不少见,通常是因为 终端类型($TERM)与服务器支持的 terminfo 不一致。
🐛 现象:Backspace 不工作,变成空格
SSH 登录后,输入命令时发现:
- 按 Backspace 不删除字符
- 屏幕上反而出现空格
bash、vim等行为都异常
这显然是键位映射被弄乱了。
🔍 排查:查看 BACKSPACE 实际发送了什么
为了验证本地 Backspace 键到底发送了什么,可以在 VPS 上运行:
cat
然后按 Backspace,会看到:
^?(DEL)^H(Backspace)- 或者空格
如果是空格,基本可以确定是终端类型造成的兼容性问题。
按 Ctrl + C 退出 cat。
🎯 问题根源:kitty 的 TERM=kitty,VPS 不认识
kitty 默认会声明自己是一个 kitty 终端,因此连接后 $TERM 变量为:
TERM=kitty
但 VPS(尤其是新建的基础镜像)通常没有 kitty 的 terminfo 数据。
当服务器无法识别 TERM 类型时:
- Backspace、Delete、方向键等行为都会出错
- 命令行布局乱码
- 全屏应用(如 vim、htop)出现奇怪渲染问题
✅ 解决方案:将 TERM 改为兼容性最强的 xterm-256color
在服务器上输入:
export TERM=xterm-256color
瞬间修复 Backspace 键异常!
这是最通用、安全、稳定的终端类型,几乎所有 Linux 发行版都内置对其的完整支持。
🔧 让配置永久生效
在 VPS 上执行:
echo 'export TERM=xterm-256color' >> ~/.bashrc
重新登录 SSH 后即可自动应用。
✨ 进阶方案:继续使用 kitty(可选)
如果你想使用 kitty 的高级功能(更快的渲染、更好的键映射支持),可以让 kitty 自动上传 terminfo:
kitty +kitten ssh user@host
这会自动把 kitty 的 terminfo 复制到服务器,使其完全理解你的终端键位。
不过对于大多数人而言,xterm-256color 已经足够稳定好用。
📝 总结
| 问题 | 原因 | 解决方案 |
|---|---|---|
| Backspace 变空格 | VPS 不认识 TERM=kitty | export TERM=xterm-256color |
| 键位错误 / vim 显示混乱 | 缺少 kitty terminfo | 使用 kitty +kitten ssh |
| 配置丢失 | 未持久化 | 写入 ~/.bashrc |
最终适合大多数用户的修复方法是:
export TERM=xterm-256color
echo 'export TERM=xterm-256color' >> ~/.bashrc
| 附录
cat 命令在 不加任何参数、也 不指定文件名 的情况下,会:
👉 进入 标准输入 → 标准输出 模式
也就是:
- 接受用户从键盘输入的内容(stdin)
- 立即把输入的内容原样输出到终端(stdout)
这常被称为 回显模式(echo mode) 或 透传模式。