bsh 或 zsh 中的左制表符补全

bsh 或 zsh 中的左制表符补全

当我在 bash 或 zsh 中使用标准制表符补全时,我会输入文件名或路径的第一部分,然后点击补全单词。这种方法很有效,除非我所在的目录中充满了文件,而文件名的所有变体都在单词的末尾,例如,一个充满了带时间戳的文件的目录,这些文件都以相同的前缀开头:

foo-20120701124501.log
foo-20120701124531.log
foo-20120701124601.log
foo-20120701124631.log
foo-20120701124701.log
foo-20120701124731.log

在这种情况下,如果我输入,foo<tab>我会得到foo-20120701124- 我可以再次制表,并查看所有文件...我必须输入接下来的 3 个字符才能获得唯一的文件名。

我想知道是否有办法输入例如4731.log然后完成单词的开头。我猜这在 bash 中会很困难,因为 bash 补全使用 $COMP_CWORD$COMP_KEY进行可编程补全,从我阅读的方式来看,我认为它们不允许向左完成单词。我对 zsh 内部的补全了解不够,不知道从哪里开始查找手册页。

答案1

只有在按下 Tab 键之前​​有一个前导命令时,此命令才会起作用。这可能不是您想要的,但只有这样我才能获得所需的结果。下面的示例应该适用于您的情况。您只需要在 *4731.log 的末尾按下 Tab 键 1 次。如果它是唯一的,它将自动完成。

ls *4731.log

相关内容