随着我的脚本越来越多地添加到composer.json文件中,在bash为composer命令具有自动完成功能将很有用。 我在Twitter上的问题并没有给出立即的解决方案,并且由于我已经在为Phing做类似的事情,所以我袖手旁观并编写了解决方案。
我们首先在bash_completion.d目录中创建一个名为composer的新bash完成文件(该文件需要执行权限)。 该目录通常位于/etc/bash_completion.d/ ,但是在使用Homebrew的 OS X上,该目录位于/usr/local/etc/bash_completion.d/ (假设您已经安装了brew install bash-complete )。
这是文件:
(请注意,只有最新版本的bash-complete支持__ltrim_colon_completions ,因此您可能需要删除此行。)
要获得作曲家的命令列表,我们通过运行composer --no-ansi为compgen的-W选项创建一个单词列表,然后使用AWK删除不是命令的所有内容。 当用户在输入连字符后按下Tab键时,我们还将创建一个单独的标志参数列表。
通过运行composer {cmd} -h --no-ansi ,我们自动为任何子命令填写标志,并使用tr和grep将列表限制为仅以连字符开头的单词。
现在,在作曲家之后按Tab,bash将自动完成内置的作曲家命令和用户脚本!

在本示例中可以看到,除了内置命令(如dump-autoload和show ,还显示了我自己的脚本,包括apiary-fetch和其他脚本。
当记忆使我失败时,这非常有用!