프로그래밍 방식으로 zsh 완성에 액세스하는 방법은 무엇입니까?

프로그래밍 방식으로 zsh 완성에 액세스하는 방법은 무엇입니까?

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

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: )을 알고 있다고 가정할 때 특정 문자열을 입력하고 탭을 누르면 어떤 일이 발생하는지 출력을 어떻게 얻을 수 있나요? 본질적으로 나는 전 애인으로부터 의견을 얻으려고 노력하고 있습니다. 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:'

패키지 자체에는 개념 증명이므로 실행 중에 버그가 포함될 수 있다고 명시되어 있습니다.

관련 정보