在bash中以行尾/中间自动完成

时间:2008-12-30 00:27:23

标签: bash

在bash中有一种快速方法可以根据单词的中间部分进行制表符自动完成。

例如,如果我在目录中有这些文件:

001_apple.txt 002_pear.txt 003_dog.txt 

我想输入序列:*d<TAB>来自动完成003_dog.txt。

这可以用bash完成吗?在其他炮弹中更容易做到吗?

5 个答案:

答案 0 :(得分:4)

尝试使用ESC-g进行全局扩展。

并且您应该始终安装bash-completion软件包(默认情况下经常包含,但您需要在bash配置文件脚本中提供它)。

答案 1 :(得分:2)

看起来像zsh does this还有更多。请参阅:expand-or-complete-prefix和COMPLETE_IN_WORD选项。

Fish也可以很好地开箱即用。

答案 2 :(得分:2)

ls *d*<TAB>

在bash中运行。不确定这是不是Ben的意思。 ls当然可以是任何其他命令。

答案 3 :(得分:0)

你可以替代 `ls *d*`  实现相同的效果,但不如制表完成那么方便

答案 4 :(得分:0)

我认为这是readline的一个功能(甚至可能不是默认的键绑定):

键入ls \*middle\*,然后键入ctrl-x, *\*middle\*替换为与该模式匹配的文件。