鱼补全脚本

鱼补全脚本

我正在为命令编写完成脚本,但我陷入了困境。我找到的文档和各种网站不符合我的需要。主要命令是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'

即使在输入标志后,脚本也会保持制表符完成

答案1

完成命令的标志-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)"

$请注意,在 Fish 中,在捕获问题中发布的命令结果时不使用该符号。

至于你最后的最后一点。如果从 中删除引号set,应该可以解决重复项的问题。通过以这种方式使用引号,它指定了一个长命令而不是单独的命令。

相关内容