프로그래밍 방식으로 zsh 완성에 액세스하려면 어떻게 해야 합니까?

프로그래밍 방식으로 zsh 완성에 액세스하려면 어떻게 해야 합니까?

zsh에는 탭을 눌러 활성화되는 완성 시스템이 있습니다.

llama@llama:~$ git st<Tab>
Completing main porcelain command
stash      -- stash away changes to dirty working directory
status     -- show working-tree status
Completing plumbing internal helper command
stripspace -- filter out empty lines

내가 알아낼 수 있었던 것은 이것이 완료 명령이 호출되는 /usr/share/zsh/functions/Completion/Unix/_git스크립트 에서 온다는 것입니다._git

완성 함수의 이름(예: _git)을 알고 있다고 가정할 때, 특정 문자열을 입력하고 탭을 눌렀을 때 어떤 일이 일어날지에 대한 출력을 어떻게 얻을 수 있습니까? 본질적으로 나는 ex의 입력을 얻으려고 노력하고 있습니다. git st위의 출력을 얻습니다(프로그래밍 방식으로, 스크립트에서).

있다많은다른기존의질문~에 대한이것~을 위한bash이지만 zsh를 사용하여 이를 달성하는 방법을 설명하는 내용을 찾지 못했습니다.

답변1

이 작업은 다음을 사용하여 수행할 수 있습니다.zsh-캡처-완성. 저장소의 README.md 파일은 몇 가지 예를 제공합니다.

capture.zsh 'vim -'
capture.zsh 'vim --'
capture.zsh 'vim --r'
capture.zsh 'echo *('
capture.zsh 'scp hostname:'

패키지 자체는 개념 증명임을 명시하므로 실행 시 오류가 포함될 수 있습니다.

관련 정보