为什么终端中的删除有效但箭头键不起作用?

为什么终端中的删除有效但箭头键不起作用?

在 Linux 终端中,我使用“cat > file.txt”一次生成一行文件。

我发现每行删除键都有效,但箭头键插入转义码,而不是在行中左右移动。

为什么是这样?终端基本操作不能做左右方向键有什么原因吗?我知道有像 GNU readline 这样的东西可以做到这一点,但我的问题与这些无关。

答案1

因为终端驱动程序的行编辑功能非常原始并且不是包括左右移动插入点之类的内容。

他们的工作包括:

  • 删除最后一个字符(VERASE/ erase、 BackSpace)
  • 删除最后一个单词(VWERASE/ werase,Control-W)
  • 删除整行(VKILL/ kill,Control-U)

它们也无法将多个键序列(通常由左箭头键和右箭头键发送的转义符)绑定到其特殊操作。

当然,VERASE并且VWERASE不支持 Unicode; Linux 有一个敷衍的IUTF8标志(它适用于简单的数据,总比没有好),但它不知道零宽度修饰符、方向标记等。

查看stty(1)termios(3)联机帮助页以获取更多详细信息。

相关内容