Zsh 탭 완성이 부분 경로에 대해 원하는대로 작동하지 않습니다.

의 파일과 디렉토리에 대해 대소 문자를 구분하지 않는 퍼지 완료를 원합니다 zsh. 몇 시간 동안 매뉴얼을 읽은 후에 이것이 내가 생각해 낸 것입니다.

zstyle ':completion:*:*:*:*:globbed-files' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
zstyle ':completion:*:*:*:*:local-directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
zstyle ':completion:*:*:*:*:directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'

또한 TAB한 번 눌러 가능한 완료를 표시 하고 정확히 하나의 완료가 있으면 입력 한 내용 만 수정하고 싶습니다. 그런 다음 다시 누르면 TAB“메뉴 완료”모드로 전환됩니다. 매뉴얼을 바탕으로 나는 이것을 생각해 냈습니다.

zstyle ':completion:*' menu select

이제는 한 가지 상황을 제외하고 모든 것이 제대로 작동합니다. 두 개의 폴더가 Desktop있고 .rstudio-desktop홈 디렉토리에 있습니다. 내가 있기 때문에 setopt globdots다음을 입력 할 것으로 예상됩니다.

$ cd ~/dktop<TAB>

입력 한대로 내 명령을 그대로두고 완료 후보 Desktop및 로 표시 .rstudio-desktop합니다. 대신을 제거 dktop 하여 다음과 같이 남겨 둡니다.

$ cd ~/

관련 매뉴얼, 가이드, Stack Exchange 질문 및 기타 다양한 소스를 모두 살펴 보았습니다. 그러나 내가 무엇을하든이 작업을 수행 할 수 없습니다.

흥미롭게도,하지만 난 경우 홈 디렉토리 예상대로 다음 다음 모든 작업을 입력 :

$ cd dktop<TAB>

즉, 경로의 선행이 아닌 세그먼트에만 문제가 있습니다 ( C-x h이것은 사용중인 태그가 directories아닌 태그에 해당한다는 것을 알 수 있습니다 local-directories).

~/.zshrc위에서 설명한 상황과 동작을 재현하는 것이 있습니다 ( zshHomebrew에서 새로운 El Capitan 가상 머신 에서 테스트 됨 ).



답변

가능한 해결책은 다음과 같습니다.

bindkey "^I" expand-word

이로 인해 탭 ~/이 절대 경로 로 확장 됩니다.