原始程式碼段請參考以下連結, 歡迎 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
希望對你能有所幫助! 歡迎評論交流意見或建議!
本作品採用《CC 協議》,轉載必須註明作者和本文連結