为什么 terminfo[kcuu1] = '\EOA'?

Ste*_*Kay 6 tty termcap terminfo

据我所知terminfo(5),kcuu1 应该是按下向上箭头时终端发送的序列。我从来没有见过除了^[[A(现在谈论cat,搞乱终端设置等)以外的任何东西。那么,鉴于我使用的终端(rxvt、gnome-terminal、iTerm)都默认为 TERM=xterm,为什么不是 kcuu1 \E[A

我看到 cuu1 \E[A,但是(再次从手册页),这是我应该发送到终端以移动光标的字符串,而不是终端发送给我的字符串。

顺便说一句,这是 OS X 的情况。

mel*_*ene 5

箭头和其他特殊键(terminfo 将它们称为“键盘”)根据终端是否处于“应用程序模式”发送不同的代码。想要使用各种k*键的应用程序应该smkx首先输出(并rmkx在最后恢复旧的行为)。

您可以尝试Ctrl+V Up在 vi (或类似的终端应用程序)中查看是否Up确实发送\EOA到那里。

请参阅这些链接了解更多详细信息: