为什么使用 SSH 时 vim 中的 Backspace 行为会发生变化?

为什么使用 SSH 时 vim 中的 Backspace 行为会发生变化?

当我通过 ssh 访问某台特定机器时,vim 中的 Backspace 行为会发生变化。我没有删除字符,而是输入了 ^? 。

问题是这台机器充当网关,当我访问这个网关后面的任何机器时,这个问题就会传播(当我在域内使用 ssh 连接任何这些机器时 - 无需通过域 - 我不会遇到这个问题)...

这虽然不是什么大问题,但是确实很烦人。

任何想法 ?

答案1

这通常是由于您的 shell 中的配置与终端仿真器中的配置不匹配造成的。

有些使用退格键 (0x08),有些使用 DEL (0x7f)。如果在终端会话中运行

stty -a

你会看到如下一行:

intr = ^C; quit = ^\; erase = ^?; kill = ^U; ...

那个删除的是 DEL 字符。您需要配置 SSH 以传输该字符,或者执行以下操作:

stty erase '^H'

改变外壳。

我知道 Putty 可以改变按下退格键时传输的字符。我认为它隐藏在终端部分的某个地方(至少在 v0.58 中),但我手边没有 Windows 可以检查它。

然而,事实并非如此真的与编程相关,因此您可能会发现它被转移到superuser.com。

相关内容