나는 Z 셸의 CDPATH 탭 완성 기능을 좋아하지만 때로는 약간 과잉일 때도 있습니다. 로컬 디렉터리에 일치하는 항목이 없는 경우에만 대체 수단으로 시작하기를 원합니다.
예를 들어 방금 ~/Code/Haxe
입력했습니다 .
$ cd h<tab>
로 시작하는 유일한 디렉토리는 입니다 h
. haxe.org
디렉토리 이름을 완성하는 대신 h
CDPATH에서 . 반면에 (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 ~
.