在bash中通过行的末尾/中间自动完成

在bash中通过行的末尾/中间自动完成,bash,Bash,在bash中,有一种快速的方法可以根据单词的中间部分自动完成tab 例如,如果目录中有这些文件: 001_apple.txt 002_pear.txt 003_dog.txt 我想输入序列:*d自动完成003\u dog.txt 这可以在bash中完成吗?在其他壳中更容易做到吗 您可以替换 `ls*d*` 为了达到同样的效果,虽然不像制表符完成那样方便,但是可以尝试使用ESC-g进行全局扩展 而且您应该始终安装bash完成包(默认情况下经常包括在内,但您需要在bash概要文件脚本中找到它的源

在bash中,有一种快速的方法可以根据单词的中间部分自动完成tab

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

001_apple.txt 002_pear.txt 003_dog.txt 
我想输入序列:
*d
自动完成003\u dog.txt

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

您可以替换
`ls*d*`

为了达到同样的效果,虽然不像制表符完成那样方便,但是可以尝试使用ESC-g进行全局扩展

而且您应该始终安装bash完成包(默认情况下经常包括在内,但您需要在bash概要文件脚本中找到它的源代码)。

看起来更像plus。请参阅:展开或完成前缀并在单词选项中完成

这也是非常好的开箱即用

ls*d*
ls *d*<TAB>

在bash中工作。不知道本是不是这个意思
ls当然可以是任何其他命令。

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


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

或者,您可以不调用子shell而使用具有相同效果的序列“d”,而不是“
ls*d*
”。或者,对于真正的受虐狂,“$(ls$(ls$(ls$(ls d))”:-)很酷的把戏,唯一的问题是它似乎不允许你在多个选项之间循环至少如果你重复它,它会列出选项。奇怪的是,当我在shell中键入它时,它不允许我扩展,ls d按预期工作,但tab没有扩展它…在我的shell中也是如此,如果回答者让它工作,它必须是一个配置项。可能是“shopt-s extglob progcomp”选项。尝试运行该命令,然后重新尝试。OP希望自动完成,而不是shell全局绑定。