.inputrc TAB行为异常


11

今天我很忙,这是另一个问题:

当我把它们放进去时.inputrc,它们为什么都做同样的事情呢?

TAB: menu-complete
Shift-TAB: menu-complete-reverse

也就是说,他们都按照最后一个说的去做。

Answers:


15

Readline对名为的修饰符Shift一无所知,并悄悄地忽略了未知的修饰符名称。尝试wibble-TAB

要将动作绑定到Shift+ Tab,您需要找出终端发送的转义序列。在bash中,运行cat并输入Ctrl+,V然后输入Shift+ Tab。这将从字面上插入转义序列。第一个字符可能是转义字符,显示为^[;不同的终端具有不同的转义序列,但是常见的可能性是␛[Z(即转义,左括号,大写字母Z)和␛␉(即转义,制表符)。适当地将密钥绑定到~/.inputrc(其中\e表示转义字符)。

"\e\t": menu-complete-backward
"\e[Z": menu-complete-backward

1
啊,^[Z为我工作(BASH);感谢您的详细回答!:)
user541686 2011年

您在“猫”之前还是之后按Enter键?为什么需要“猫”?没有“ cat”,我似乎得到了相同的转义序列。
dougkramer 2014年

@ douglas.kramer运行cat可避免任何bash绑定。通常bash具有相同的Ctrl + V绑定,可以按字面意义插入下一个字符,因此不会有所不同。
吉尔斯(Gillles)“所以-别再作恶了” 2014年

我在让Shift + Tab绑定到“ shell-expand-command”时遇到麻烦。我得到:在 $ cat <Enter> <Shift+Tab>哪个显示中^[[Z ,我是否总是总是在\e从中得到的序列之前添加Ctrl+V?这是否转换为:"\e^[[Z": shell-expand-command
dougkramer 2014年

@dou用^[`\ e`代替
吉尔斯'SO-不要再邪恶了'

4

在Xubuntu 16.04上,终端:xfce4-terminal 0.6.3,shell:bash

为了使Shift+ Tab工作,我不得不使用:

bind '"\e[Z": menu-complete-backward'

~/.bash_profile使用方法:bind TAB:menu-completebind '"\e[Z": menu-complete-backward'(注意单引号和双引号的使用!)。
Erik
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.