zsh-completion: パラメーターの 2 つの部分をコロンで区切って完成します。

zsh-completion: パラメーターの 2 つの部分をコロンで区切って完成します。

単一のフォーマットパラメータを使用してコマンドのzsh補完を設定したいと思いますscheme:parameter

可能なすべてのシナリオと可能なすべての引数を返すコマンドがあるとします。コロンが入力されるまでスキームリストで完了し、引数リストで完了する完了関数は何ですか?

単一のリストで簡単に実行できます。たとえば、次のようになります。

function _prmt() { _alternative 'args:args:($(prmt --completions))' }

しかし、区切り文字を認識する方法がわかりません。

答え1

:1つのアプローチは、次のようにさまざまな動作を見つけて表示することです。

#compdef foo
# put this file into a $fpath directory (typically one you create
# and prefix to that array) then `rm ~/.zcompdump && exec zsh`
# until work-making (a temporary `print -z "foo "` in your .zshrc
# may also speed debugging, as then you can go directly to the
# mashing-of-tab stage)

local curcontext="$curcontext" state line
local suf
typeset -A opt_args

_arguments -C -s \
  '1: :->dofoo' \
  && return 0

case "$state" in
  dofoo)
    if compset -P '*[:]'; then
      _values "parameters" $(_call_program getparam ls /)
    else
      if compset -S '[:]*'; then
        suf=()
      else
        suf=( -qS ':' )
      fi
      _wanted "schemes" expl "scheme" compadd $suf[@] $(_call_program getscheme ls /)
    fi
  ;;
esac

ビットls /は適切な命令でなければならず、これらのプログラムがエクスポートする内容などに応じて、出力をリストに適切に分割するために必要な追加の複雑さがあります。

学習方法: 主にcd $fpath[-1]完了処理があると完了セクションを見てください。_chown_users:追加情報

関連情報