Autocomplete

魚補全腳本

  • May 22, 2021

我正在為命令編寫完成腳本,但我被卡住了。我發現的文件和各種網站不符合我的需要。主要命令是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,那應該可以解決重複的問題。通過以這種方式使用引號,它指定了一個長命令而不是單獨的命令。

引用自:https://unix.stackexchange.com/questions/650811