更简洁的版本
"\t": menu-complete
创建~/.inputrc
这两个文件后,
$ touch one.two.txt
$ touch one.four.txt
开始写下面的内容,
$ ls one
击中Tab你会得到
$ ls one.four.txt
现在将光标移动到之前four
,删除four
,只写t
,然后Tab再次点击。你会得到
$ ls one.two.txt.txt
有没有办法防止.txt
此工作流程中的重复?
原问题
当我按下 时,我使用menu-complete
bash 函数循环完成Tab,我对此很满意。但以下的情况却经常发生在我身上。
longparthardtoremember.with.QQQQQQQ.extension
假设我正在包含这些文件的目录中查找该文件
longparthardtoremember.with.AAAAAAA.nice.long.extension
longparthardtoremember.with.BBBBBBB.very.nice.long.extension
...
如果我Tab完成,$ long
第一个文件名将被插入。此时,我想移动到文件名的中间,删除该AAAAAAA
部分,键入B
,然后Tab再次 -complete 。如果我这样做,后面的所有部分BBBBBBB
也会被插入,从而导致它的重复,这显然是我不想要的。
在vi
编辑模式下,我可以很快地处理这个问题(我很快移动到重复的部分并将其删除),但它仍然很烦人。
纯属偶然,我skip-completed-text
在 bash 的手册页中找到了 bash 选项。这不是我需要的吗?我已经设置了它on
,但我看不出工作完成中的行为有任何差异Tab。我是否误解了手册页?
答案1
skip-completed-text
这样工作(用你的例子touch one.four.txt
):
$ ls one.four
# ^ cursor is on the f
如果你按 Tab 键,skip-completed-text on
它将完成
$ ls one.four.txt
如果你按 Tab 键,skip-completed-text off
它将完成
$ ls one.four.txtour
所以这个设置在你编辑中间补全的时候并没有什么帮助。
答案2
代替
现在将光标移动到之前
four
,删除four
,只写t
,然后Tab再次点击。
做
将光标移动到之前four
,只写t
,然后点击Tab(Ctrlk默认从光标删除直到结束)