修复 Linux 云服务器 Backspace 变成空格的问题(kitty + SSH)

85 阅读2分钟

修复 Ubuntu VPS 中 Backspace 变成空格的问题(kitty + SSH)

在连接 VPS 时,终端键位映射经常会出现一些奇怪的问题。最近我在使用 ArchLinux kitty 终端通过 SSH 连接到一台全新的 Ubuntu 20.04 VPS 时,遇到了一个非常“离谱”的现象:

Backspace(退格键)按下后,不是删除文字,而是输入空格。

这类问题并不少见,通常是因为 终端类型($TERM)与服务器支持的 terminfo 不一致


🐛 现象:Backspace 不工作,变成空格

SSH 登录后,输入命令时发现:

  • 按 Backspace 不删除字符
  • 屏幕上反而出现空格
  • bashvim 等行为都异常

这显然是键位映射被弄乱了。


🔍 排查:查看 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=kittyexport 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)透传模式