zsh-completion: 매개변수의 두 부분을 콜론으로 구분하여 완성합니다.

zsh-completion: 매개변수의 두 부분을 콜론으로 구분하여 완성합니다.

단일 형식 매개변수를 사용하여 명령에 대해 zsh 완성을 설정하고 싶습니다 scheme:parameter.

가능한 모든 시나리오와 가능한 모든 인수를 반환하는 명령이 있다고 가정해 보겠습니다. 콜론이 입력될 때까지 구성표 목록에서 완료되고 인수 목록에서 완료되는 완료 함수는 무엇입니까?

단일 목록에서는 쉽게 수행할 수 있습니다. 예를 들면 다음과 같습니다.

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

하지만 구분 기호를 인식하는 방법을 모르겠습니다.

답변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:추가 정보.

관련 정보