我有一个带有基于 CLI 的 Symfony 控制台的应用程序。该应用程序不使用 Symfony 框架,仅使用 Symfony Console 组件。
当我执行时
php app/myapp
我得到了通常的概述,其中显示了名称、版本、选项和注册命令。假设我只有一个命令,称为“displaykittens”。我想要做的是
php app/myapp d <TAB>
并完成
php app/myapp displaykittens
正如现代 Unix 环境中所期望的那样。不幸的是,似乎没有任何制表符补全功能。控制台组件本身提供了一个实用程序,允许在命令本身中按照这些路线执行某些操作。但这并不能帮助我完成命令的制表符。这有可能吗?
Symfony 5.4+ 本身具有自动完成功能。 您可以使用
bin/console completion --help
获取有关自动完成的更多信息。
例如,使用 bash,您可以将其添加到您的
~/.bashrc
中。
eval "$(/var/www/app/bin/console completion bash)"
官方公告:https://symfony.com/blog/new-in-symfony-5-4-console-autocompletion
您可能喜欢这个扩展https://github.com/stecman/symfony-console-completion 它允许您设置活动命令和我们自己的建议
Console 组件的 Application 类可以包装在由同一组件提供的 Shell 类中。这提供了一定程度的自动完成功能。
根据 freenode 上 #symfony IRC 上的人的说法,没有办法让控制台应用程序提供开箱即用的自动完成功能,因为需要对 shell 配置进行更改。
我在 https://github.com/bamarni/symfony-console-autocomplete
使用(并且已经接受了一些 PR)我的团队开发设置中有几个 Symfony 控制台应用程序。
我们自己的
wu
(工作流程实用程序)、composer
、artisan
(Laravel)和 phinx
(Rob Morgan -> CakeDB 迁移工具)。
所以,我有这个脚本:
#!/usr/bin/env bash
echo Building bash auto-completion for artisan
./vendor/bin/symfony-autocomplete ./artisan > $(brew --prefix)/etc/bash_completion.d/artisan
echo Building bash auto-completion for composer
./vendor/bin/symfony-autocomplete composer > $(brew --prefix)/etc/bash_completion.d/composer
echo Building bash auto-completion for phinx
./vendor/bin/symfony-autocomplete ./vendor/robmorgan/phinx/bin/phinx > $(brew --prefix)/etc/bash_completion.d/phinx
echo Building bash auto-completion for wu
./vendor/bin/symfony-autocomplete ./wu > $(brew --prefix)/etc/bash_completion.d/wu
echo Recycle your terminal to load the auto-completions.
还有那行``` “更新自动完成”:“脚本/更新自动完成.sh”
in the `scripts` array in my `composer.json`.
And I install the tool into my global composer setup.
Happy to help more if this is an appropriate tool for you.