zsh 탭 완성을 사용할 때 로컬 파일 또는 디렉터리가 일치하면 CDPATH가 무시됩니다.

zsh 탭 완성을 사용할 때 로컬 파일 또는 디렉터리가 일치하면 CDPATH가 무시됩니다.

나는 Z 셸의 CDPATH 탭 완성 기능을 좋아하지만 때로는 약간 과잉일 때도 있습니다. 로컬 디렉터리에 일치하는 항목이 없는 경우에만 대체 수단으로 시작하기를 원합니다.

예를 들어 방금 ~/Code/Haxe입력했습니다 .

$ cd h<tab>

로 시작하는 유일한 디렉토리는 입니다 h. haxe.org디렉토리 이름을 완성하는 대신 hCDPATH에서 . 반면에 (AUTO_CD와 함께) Haxe. 나는 이것을 사용한다항상, 하지만 뒷자리에 앉아 로컬 디렉터리로 전환하고 싶습니다.

이 문제에 관한 질문을 찾지 못했습니다. 이것제안된 완성 항목 표시를 처리하지만 그건 내 관심사가 아닙니다. 로컬 디렉터리가 완벽하게 일치하면 CDPATH의 모든 내용을 무시하고 싶습니다.

답변1

zstyle 설정이 없습니다. 당신이 할 수 있는 것은 빈 완성을 사용해 보고 cdpath, 실패한다면 cdpath.

_cd_try_without_cdpath () {
  CDPATH= _cd "$@" || _cd "$@"
}
compdef _cd_try_without_cdpath cd pushd

답변2

~CDPATH내 콘솔이 현재 위치의 하위 폴더 대신 (my)의 폴더로 전환되었기 때문에 이 문제를 발견했습니다 . 이것이 정확히 이 질문의 목적인지는 잘 모르겠지만 내 해결책 은 단순히 .:.CDPATH.bashrc

CDPATH=".:/home/fabian:$drive"

이 방법은 cd항상 현재 폴더에 있는 항목에 우선순위를 부여하지만, 현재 폴더에 아무것도 없으면 다른 폴더로 전환할 수도 있습니다.

(또한 ZSH 대신 Bash를 사용하고 있는데 둘은 동일하거나 유사할 수 있습니다.)

참고: 이는 cd" " 에 대한 바로 가기로 " "(인수 없음)을 구분합니다 cd ~.

관련 정보