Autocomplete
魚補全腳本
我正在為命令編寫完成腳本,但我被卡住了。我發現的文件和各種網站不符合我的需要。主要命令是
pacstall
,它有標誌:-I -S -R -C -U -V -L -Up -Qd -Qi
. 對於大多數標誌,我需要將完成作為命令的輸出(如果我執行pacstall -I
,然後按標籤,它將顯示命令的輸出curl -s $(cat /usr/share/pacstall/repo/pacstallrepo.txt)/packagelist
。這是我到目前為止所擁有的:set -l pacstall_commands "-I -S -R -C -U -V -L -Up -Qd -Qi" complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -I -d 'Install package' complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -S -d 'Search for package' complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -R -d 'Remove package' complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -C -d 'Change repository' complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -U -d 'Update pacstall scripts' complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -V -d 'Print pacstall version' complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -L -d 'List packages installed' complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -Up -d 'Upgrade packages' complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -Qd -d 'Query the dependencies of a package' complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -Qi -d 'Get package info'
即使在輸入標誌後,腳本也會保持標籤完成
完成命令的
-n
標誌允許您指定完成發生的條件。在這種情況下,您可以使用該__fish_seen_subcommand_from
函式來指定子命令是否-I
已經被看到。在此之後,您可以使用
-a
標誌指定要在其中執行的命令()
。complete -f --command pacstall -n "__fish_seen_subcommand_from -I" -a "(curl -s (cat /usr/share/pacstall/repo/pacstallrepo.txt)/packagelist)"
$
請注意,在魚中,當您在問題中發布命令的結果時,您不會使用該符號。至於你最後的一點。如果您從 中刪除引號
set
,那應該可以解決重複的問題。通過以這種方式使用引號,它指定了一個長命令而不是單獨的命令。