为了什么我都试过了,TAB
并且C-i
在.inputrc文件似乎意味着同样的事情,无论我绑定到一个绑定到其他。我知道最初是一样的,而且这种行为是从旧时代继承下来的,但是现在,除了终端仿真器之外,所有 X 应用程序都使 aC-i
和TAB
press有所不同。
那么有没有办法在我按下TAB
键时运行终端命令(例如“完成”)并在按下时运行另一个命令C-i
?
(同样的问题适用于C-m
and ENTER
, C-z
, C-d
,以及我想通过原始绑定以外的其他方式发送的所有这些控制序列,并将我自己的命令应用于这些宝贵的键绑定)
顺便说一句,如果你能解释一下从按键到 shell 解释的过程,这将有助于我理解。现在我明白键盘事件由 Xmodmap 翻译,然后由 .inputrc 翻译,结果由 shell 或类似的东西解释。
我目前使用 Guake,有时使用 gnome-terminal 作为终端模拟器。
按照评论中提出的链接后,终端模拟器似乎是将TAB
keysym 从 X 服务器转换为 的链的元素C-i
,并将其发送到 bash shell,因为它不理解诸如TAB
,ENTER
和兄弟姐妹之类的东西。因此,在终端模拟器之后和 bash shell 之前,配置 readline 本身将不起作用。问题可以这样精确:如何配置我的终端模拟器,以便将TAB
and C-i
、ENTER
andC-m
等转换为不同的字符序列对?也许制作TAB
并ENTER
发送一个新的自定义转义序列,稍后可以在 .inputrc 中映射到原始命令,最后能够使用C-i
和C-m
用于其他目的。或者离开TAB
和ENTER …