Symfony 控制台选项卡完成

问题描述 投票:0回答:5

我有一个带有基于 CLI 的 Symfony 控制台的应用程序。该应用程序不使用 Symfony 框架,仅使用 Symfony Console 组件。

当我执行时

php app/myapp

我得到了通常的概述,其中显示了名称、版本、选项和注册命令。假设我只有一个命令,称为“displaykittens”。我想要做的是

php app/myapp d <TAB>

并完成

php app/myapp displaykittens

正如现代 Unix 环境中所期望的那样。不幸的是,似乎没有任何制表符补全功能。控制台组件本身提供了一个实用程序,允许在命令本身中按照这些路线执行某些操作。但这并不能帮助我完成命令的制表符。这有可能吗?

php symfony command-line-interface tab-completion
5个回答
4
投票

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


3
投票

您可能喜欢这个扩展https://github.com/stecman/symfony-console-completion 它允许您设置活动命令和我们自己的建议


1
投票

我不知道普通的

bash
外壳是否可以。但如果您使用
zsh
,则可以安装
oh-my-zsh
。有一个很棒的 插件 完全可以满足您的要求:Oh-My-ZSH Symfony2 插件


0
投票

Console 组件的 Application 类可以包装在由同一组件提供的 Shell 类中。这提供了一定程度的自动完成功能。

根据 freenode 上 #symfony IRC 上的人的说法,没有办法让控制台应用程序提供开箱即用的自动完成功能,因为需要对 shell 配置进行更改。


0
投票

我在 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.
© www.soinside.com 2019 - 2024. All rights reserved.