키 바인딩을 사용한 임의의 zsh 완성

키 바인딩을 사용한 임의의 zsh 완성

때로는 명령에 완성 기능이 설치되어 있지 않거나 구문적으로 다양한 유형의 인수를 허용하여 완성 기능을 쓸모 없게 만들 수도 있습니다. 예를 들어 "git checkout"은 git 추적 파일의 이름을 사용할 수 있습니다.또는심판이나 다른 나무 같은 이름. 또한 일부 옵션 플래그를 사용할 수도 있습니다. 가능한 완료 횟수가 많습니다.

예를 들어 지점 이름을 완성하고 싶다는 것을 알면 완료할 키를 바인딩하거나 지점 이름 메뉴를 표시하는 방법이 있습니까? (모든 완료 카테고리에도 마찬가지입니다.)

그것은 가능하고 유용해 보이지만 실제로는 본 적이 없습니다.

답변1

예, 가능합니다. 나는 원래 zsh 메일링 리스트 중 하나에서 다음을 얻었지만 누가 게시했는지 기억이 나지 않습니다.

zle -C complete-file complete-word _generic
zstyle ':completion:complete-file::::' completer _files
bindkey '^x^f' complete-file

이는 가 아닌 다른 완성 기능을 사용하도록 쉽게 조정할 수 있습니다 _files.

complete-file첫 번째 줄은 내장 complete-word위젯처럼 동작하고 함수를 사용하여 _generic완성 목록을 생성하는 새 완성 위젯을 정의합니다 .

그런 다음 두 번째 줄은 해당 사용자 정의 위젯이 사용될 때 완성자가 _files완성 목록을 가져오는 데만 사용하도록 구성합니다.

그런 다음 세 번째 줄은 새 위젯을 키 시퀀스에 바인딩합니다.

관련 정보