问题描述

问题描述

问题描述

我想将我经常在终端中执行的命令绑定到组合键。该bind命令一开始似乎有效。

但是,当我使用组合键时,最终我在终端中输入的字母是不可见的,并且按 Enter 不会创建新行。我的猜测是,它可能与 less 寻呼机有某种关系。

stty --all问题开始之前和之后执行揭示了终端线设置差异:

  • echo-> -echo( echo input characters) 现在已关闭,因此我输入的所有内容都是不可见的。
  • icrnl-> -icrnl( translate carriage return to newline)
  • icanon-> -icanon( enable special characters: erase, kill, werase, rprnt)
  • lnext = ^V-> lnext = <undef>( CHAR will enter the next character quoted) 无法再先键入 ctrl+v,然后再键入 Esc 来输入转义字符。
  • flush = ^O-> flush = <undef>(https://man.openbsd.org/stty.1#flush

为什么会出现这种情况?是否可以使用自定义终端组合键而不会出现不可见问题?

如何重现

我已经在多个终端上进行了测试,包括lxterminalkittyalpine

  • 绑定组合键,例如将+bind -x '"\ea":"ls"'绑定到命令。Altals
  • 查看文件less
  • Ctrl使用+退出寻呼机c
  • Alt+ a。这应该执行该ls命令。
  • less再次查看文件
  • Ctrl使用+退出寻呼机c
  • Alt+ a。这应该ls再次执行该命令。之后键入的字母就看不见了。

我不知道为什么这个问题只在我用+退出后第二次按Alt+时发生,也不知道为什么会发生。alessCtrlc

这是该问题的视频: 不幸的是 webp 和视频不受支持

相关内容