grml의 zshrc를 기본으로 zsh를 사용하고 있습니다. 나는 작업의 일환으로 정기적으로 네트워크 경로(예: NFS, AFS)에 액세스합니다.
/a/long/network/path/on/the/other/side/of/the/world라고 쓰면 TAB을 두 번 누르면 zsh가 /a/에서 검색을 시작한 다음 /a/long /a/long/에서 검색을 시작하므로 고통스러울 정도로 느려집니다. 네트워크 등...
동시에 ls /a/long/network/path/on/the/other/side/of/the/world를 실행하면 몇 초 안에 반환됩니다. 그래서 나는 zsh에게 나를 추측하는 것을 멈추라고 말하고 싶습니다. (/usr/src/linuxx/를 작성한 다음 탭을 누르면 내가 /usr/src/linux/를 원했다는 것을 알 수 있습니다. 그러나 이것은 네트워크가 나에게 득보다 해를 더 많이 주기 때문에 좋습니다.) 마지막 슬래시 뒤에 "끝"만 자동 완성하고 싶습니다.
때로는 해결 방법을 사용하여 디렉토리에 CD를 넣은 다음 자동 완성을 사용합니다. 분명히 더 나은 방법이 있을 것입니다.
어떻게 이를 달성할 수 있나요?
답변1
이러한 종류의 동작은 다음을 통해 구성됩니다.스타일(옵션이 있는 몇 가지 기본 사항은 제외) 당신은 끄고 싶어 할 것입니다path-completion
.
기본적으로 파일 이름 완성은 경로의 모든 구성 요소를 검사하여 해당 구성 요소의 완성이 있는지 확인합니다. 예를 들어
/u/b/z
까지 완료할 수 있습니다/usr/bin/zsh
. 이 스타일을 명시적으로 false로 설정하면/
커서 이전 까지 경로 구성 요소에 대한 이 동작이 금지됩니다.
zstyle ':completion:*' path-completion false
당신은 켜고 싶을 수도 있습니다accept-exact-dirs
대신에. path-completion
왼쪽을 켜고 켜면 accept-exact-dirs
zsh는 경로가 존재하지 않는 경우 마지막 구성 요소 이외의 경로 구성 요소에 대해서만 완료를 시도합니다.
zstyle ':completion:*' accept-exact-dirs true