退格键删除终端中的整行

退格键删除终端中的整行

我通过 SSH 连接到网关计算机,然后从那里通过 SSH 连接到另一台计算机。每次我单击退格键时,整行都会被删除...

使用stty -a给我以下内容(部分摘录):

在此处输入图片描述

如您所见,退格键(“^?”)已绑定到erase,因此我期望使用它仅删除一个字符。但出于某种原因,它的行为类似于 ^U,整行都被删除...如下所示,只要我按下退格键,就会发送“^?”字符,尽管它被映射到erasekill...,但整行都会被删除。

在此处输入图片描述

已经发布了许多类似的问题,但这些解决方案都不起作用,因为 stty 已经映射到erase。 (IE

我正在使用 bash。

答案1

线索就在 中intr = ^?。当您点击 时Backspace,shell 会SIGINT从终端接收并清除命令行。我可以通过运行 轻松复制该问题stty intr ^?

通常是intr = ^C,这意味着Ctrl+c触发SIGINT。运行以下命令:

stty intr ^C

笔记:

  • 在上面的命令中你可以^C直接输入两个字符:^Cstty应该可以理解。
  • 要修复 ,Backspace只需将其设置intr为 以外的任何值即可^?。例如,您可以通过调用 将其设置为无(未定义)stty intr ''。仍然^C应该是您的首选。

相关内容