Bash에서 를 입력하면 dnf install java<tab>
설치할 패키지에 대한 제안이 많이 표시됩니다. 그러나 zsh에서 이 작업을 수행하면 아무 일도 일어나지 않습니다. 나는 /etc/bashrc를 가지고 놀았고 bash_completion이 bash에서 작동하도록 허용한다는 것을 알았지만 zsh에서 작동하게 만드는 방법을 모르겠습니다.
답변1
ZSH의 제공 완료 시간은 $fpath
시간이 지남에 따라 변하며, 특히 오래되고 낡은 ZSH 설치에서는 알 수 없는 새롭고 흥미로운 프로그램의 경우 더욱 그렇습니다. 일반적인 단계는 다음과 같습니다.
- ZSH를 최신 버전으로 업데이트하고 이제 완성 스크립트가 있는지 확인하세요.
print $fpath[-1]/_dnf
하지만 일부 명령의 경우 완성 스크립트가compdef
특정 줄 아래의 다른 파일에 있을 수도 있습니다. - 소프트웨어가 메일링 리스트에 기여되지 않은 ZSH 완성 스크립트와 함께 제공되는지 확인하십시오
zsh-workers
(드물지만 그렇다면 포함할 수 있도록 해당 완성 코드를 ZSH 사람들에게 제출할 수도 있습니다. - 다른 ZSH 완료 저장소에 완료 코드가 포함되어 있는지 확인하세요.https://github.com/zsh-users/zsh-completions/
- 프로그램에 대한 자신만의 완성 스크립트를 작성하십시오. 이를 위해서는 일반적으로 기존 완성 스크립트,
zshall(1)
문서화 등에 대한 조사_arguments
, 일반적인 조정 및 테스트가 필요합니다.
편리한 파일 통합 명령 $fpath
은 다음과 같습니다.
% print -l ${^fpath}/_pgrep(N)
/Users/jdoe/.zsh/functions/darwin/_pgrep
/opt/local/share/zsh/5.3.1/functions/_pgrep
%
이는 내 Mac에 pgrep
업스트림 외에 사용자 정의 완성이 있음을 보여줍니다.