更简洁的版本
在创建这两个文件时"\t": menu-complete
,~/.inputrc
$ touch one.two.txt
$ touch one.four.txt
下面开始写,
$ ls one
打Tab,你会得到
$ ls one.four.txt
现在将光标移动到 just before four
、 delete four
、 write only 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
...
如果 I Tab-complete$ long
将插入第一个文件名。那时,我想移动到文件名的中间,删除AAAAAAA
部分,键入B
,然后Tab再次完成。如果我这样做,后面的所有部分BBBBBBB
也会被插入,从而导致重复,这显然是我不希望的。
使用vi
编辑模式,我处理这个问题的速度相当快(我快速移动到重复的部分并将其删除),但它仍然很烦人。
纯属偶然,我skip-completed-text
在 bash 的手册页中找到了 bash 选项。这不是我需要的吗?我已经设置了它on
,但我看不出工作中完成的行为有任何区别Tab。我误解了手册页吗?
skip-completed-text
以这种方式工作(以您的示例为例touch one.four.txt
):如果您按 Tab 键,
skip-completed-text on
它将完成如果您按 Tab 键,
skip-completed-text off
它将完成所以这个设置对你编辑中间完成时没有帮助。
代替
做
将光标移动到 just before
four
, write onlyt
,然后点击Tabfollowed by Ctrlk(默认从光标删除直到结束)