我如何使bash选项卡完成行为像vim选项卡完成并通过匹配匹配循环?
我一直在寻找这个年份的解决scheme。
由于这个原因,我在操作文件时比vim更加高效。
如果我有
file_12390983421 file_12391983421 file_12340983421 file_12390986421
在bash中,键入file_1-> tab,它显然列出:
file_12390983421 file_12391983421 file_12340983421 file_12390986421
这是一个可怕的公猪和痛苦的工作。
vim中的同一个序列将一次遍历一个文件。
请有人告诉我如何在bash中做到这一点,或者如果有另一个shell可以做到这一点,我会明天切换。
默认情况下, TAB
绑定到complete
readline命令。 你想要的行为将是menu-complete
。 你可以通过编辑~/.inputrc
来改变你的readlines设置。 要重新绑定TAB
,请添加以下行:
TAB: menu-complete
有关更多详细信息,请参阅man bash
的READLINE
部分。
在之上
# cycle forward Control-k: menu-complete # cycle backward Control-j: menu-complete-backward
你也可以考虑加
# display one column with matches set completion-display-width 1
这样你将保留当前的Tabfunction,并使bash在一列中显示可能性。 所以,而不是
file_12340983421 file_12390983421 file_12390986421 file_12391983421
你会得到的
file_12340983421 file_12390983421 file_12390986421 file_12391983421
PS您可以从GNU Readline Library网站获取最新的readline
库。
感谢@sth,我发现最适合我的是:
要保持正常的bash选项卡完成,然后使用ctl -f在需要时使用菜单完成循环
把它放在你的.inputrc文件中:
"\Cf": menu-complete
根据我的经验,答案中提供的解决scheme从来没有完全为我工作。 TL; DR :将set -o vi
添加到您的~/.bashrc
。
当与vi键绑定使用菜单完成时,我必须确保
set -o vi
显示在我的~/.bashrc
某处。 我从来没有这样做过
TAB: menu-complete set editing-mode vi set keymap vi
在我的~/.inputrc
。
我的猜测是,以某种方式set editing-mode
和set keymap
映像打开了TAB: ...
设置,但我没有彻底查看文档,以弄清楚为什么是这种情况。