为什么使用 SSH 时 macOS 终端中的箭头操作会被忽略?

为什么使用 SSH 时 macOS 终端中的箭头操作会被忽略?

我使用 SSH 通过 macOS 终端连接到 Debian。因此,如果我“按上、右、下、左”,就会出现此问题:

$ ^[[A^[[C^[[B^[[D

同时本地终端一切正常。

Esc+、Option+ 和Ctrl+ 没有帮助。

我该如何修复它?

答案1

在 Unix 风格的终端上,箭头之类的特殊键是各个程序的责任。

在 Debian 主机上,您使用的 shell 不支持箭头键 — — 最有可能,/bin/sh或者是同样“最小”的功能。

尝试启动bashzsh。如果其中一个有效,请使用 使设置永久生效chsh

答案2

这个问题非常烦人,并且出现在 iTerm2 中。对于我来说,它通过以下方式修复:

https://coderwall.com/p/gfmwlw/fixing-arrow-keys-in-iterm-2

如果该页面消失,则步骤如下:打开 iTerm2:

  • 偏好设置… → 配置文件 → 默认 → 按键
  • 选择左键option (⌥)功能: + Esc
  • 双击⌥←热键,对于操作,选择发送转义序列并b在输入字段中写入。
  • 双击⌥→热键,对于操作,选择发送转义序列并f在输入字段中写入。

奖金:

  • 行首:Ctrl+a
  • 行尾:Ctrl+e

提示:

  • 如果这是远程vi问题,请注意常规 vi 不支持箭头键,但有些系统支持alias vivim有些则不支持(因此您可能习惯于运行vi但得到 vim_。
  • TL;DR - 尝试运行vim以查看您的导航问题是否已解决,然后根据需要设置别名。

答案3

您可能需要设置(或更改)TERM环境变量的值。也许您的 Debian 主机无法识别您设置的值。尝试将其更改为xterm-256colorxterm-colorxtermansivt100,然后运行/usr/bin/reset​​。例如:

$ TERM=xterm ; export TERM
$ reset

您还可以尝试进入 Mac OS Terminal.app 的“首选项”并更改“将终端声明为……”。

xterm-256color 配置文件相对较新,如果您使用的是旧版 Linux,则可能还不知道它。同样,如果您已TERM设置为linuxconsole,Terminal.app 可能无法识别它。

相关内容