Laravel artisan bash 命令自动补全
原始代码段请参考以下链接, 欢迎 star 或者评论意见建议
Github: Bash-only Laravel Artisan tab auto-complete
码云: Laravel artisan bash 命令自动补全
在日常开发中, 我们经常需要从命令行输入一些 laravel 的命令, 然而在自动补全这一方面似乎并没有太好的解决方案, 可能大家还是靠娴熟的手速输入众多的 laravel 命令. 而且目前多数的 Laravel 自动补全方案都需要额外安装一个全局的 composer 包来实现自动补全功能. 然而实际上并不需要这么麻烦, 这里提供一个纯 bash 的解决方法来解决这个问题. 只需要在你的 ~/.bash_profile
之类的 bash 初始化文件中加入下列代码即可实现自动补全:
artisan 命令补全
ARTISAN_COMMANDS=`php artisan --raw --no-ansi list | sed "s/[[:space:]].*//g"`
_artisan()
{
COMP_WORDBREAKS=${COMP_WORDBREAKS//:}
COMPREPLY=(`compgen -W "$ARTISAN_COMMANDS" -- "${COMP_WORDS[COMP_CWORD]}"`)
return 0
}
complete -F _artisan artisan
alias artisan='php artisan'
如果在 Windows 的 Git-Bash 上出现类似于:
stdout is not a tty
的错误, 只需要把 ARTISAN_COMMANDS=
这一行改成:
ARTISAN_COMMANDS=`php.exe artisan --raw --no-ansi list | sed "s/[[:space:]].*//g"`
即可.
这样就可以在 bash 环境中使用自动补全了, 输入 artisan
然后按两下 Tab 即可列出相关命令, 非常方便. 输入一半的命令也可以这样补全.
$ artisan m
make:channel make:listener make:provider migrate:install
make:command make:mail make:request migrate:refresh
make:component make:middleware make:resource migrate:reset
make:controller make:migration make:rule migrate:rollback
make:event make:model make:seeder migrate:status
make:exception make:notification make:test
make:factory make:observer migrate
make:job make:policy migrate:fresh
$ artisan mig
$ artisan migrate
migrate migrate:install migrate:reset migrate:status
migrate:fresh migrate:refresh migrate:rollback
php artisan 式命令补全
如果对原来的 php artisan
比较熟悉, 不希望直接输入 artisan
后面带参数的命令, 请使用下面的脚本:
ARTISAN_COMMANDS=`php artisan --raw --no-ansi list | sed "s/[[:space:]].*//g"`
_artisan()
{
local arg="${COMP_LINE#php }"
case "$arg" in
artisan*)
COMP_WORDBREAKS=${COMP_WORDBREAKS//:}
COMPREPLY=(`compgen -W "$ARTISAN_COMMANDS" -- "${COMP_WORDS[COMP_CWORD]}"`)
;;
*)
COMPREPLY=( $(compgen -o default -- "${COMP_WORDS[COMP_CWORD]}") )
;;
esac
return 0
}
complete -F _artisan php
也可以起到同样的效果:
$ php artisan k
$ php artisan key:generate
如果在补全的时候出现类似
$ php artisan
$ php artisan Could
$ php artisan Could Could Could
这样的情况, 说明是找不到 artisan
文件, 请尝试在 laravel 目录下启动终端, 或者修改前面命令里面 php artisan
这一块让它指向一个全局的 artisan
文件路径.
希望对你能有所帮助! 欢迎评论交流意见或建议!
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: