为什么`bind` 和`.inputrc` 表现不同?

14 terminal bash key-binding readline inputrc

我正在尝试做正确的事情并将我的键绑定放入~/.inputrc.

然而,事实证明我必须改变

bind '"\e\C-j":"\e[1~quiet \e[4~\n"'
Run Code Online (Sandbox Code Playgroud)

进入

"\e\C-j": "\eOHquiet \eOF\n"
Run Code Online (Sandbox Code Playgroud)

现在\eOH(nav-block-pos1 bound to beginning-of-line) 和\eOF(nav-block-end bound to end-of-line) 本身就是我配置中的绑定,我可能不能总是依赖。

所以主要的问题是为什么绑定到 num-block-pos1 ( \e[1~) 和 num-block-end ( \e[4~) 可以使用bind但在 my 中不行~/.inputrc


编辑:

整个事情变得更加复杂,现在我意识到\e\C-j它只适用于 Gnome 终端(或者可能也适用于 xterm,谁知道...)。

对于我的 TTY,它必须是

"\e\C-m": "\e[1~_quiet \e[4~\n"
Run Code Online (Sandbox Code Playgroud)

那么是不是各种 VT 对如何解释密钥有不同的实现?

che*_*ner 2

您的终端仿真器可以在两种模式之一下运行:应用程序模式和光标模式(请参阅http://homes.mpimf-heidelberg.mpg.de/%7Erohm/computing/mpimf/notes/terminal.html)。这取决于您的特定应用程序运行的模式,从而确定您需要发送的转义序列。