zsh 파일 탭 완성: 공백이 아닌 문자가 앞에 오는 경로

zsh 파일 탭 완성: 공백이 아닌 문자가 앞에 오는 경로

나는 이것을 검색할 방법을 찾을 수 없고 이것이 이미 인터넷에서 설명되었는지 확인할 수 없습니다.

명령줄에 다음이 있고 <TAB>끝 부분을 눌러 파일 완성을 시작하고 싶습니다.

   mycmd process file=data/old/1/

Bash를 사용할 때 이 탭에는 폴더의 파일이 표시되지만 1/Zsh에서는 기호 뒤에 공백을 넣지 않으면 이런 일이 발생하지 않습니다 =. 이를 위해 Zsh를 재구성할 수 있나요?

답변1

setopt magic_equal_subst

이는 기존 스타일과 새로운 스타일 마감 모두에 적용됩니다(예: 가 있거나 없음) compinit.

나중에 파일 이름 완성이 =모호하고 문서화되지 않은 부작용입니다.magic_equal_subst옵션. 이 옵션의 로깅 효과는 다음과 같습니다.파일 이름 확장자뒤쪽에 =.

대부분의 경우 이 옵션의 효과를 확인하면 이는 바람직한 효과입니다.

somecommand --option=~/file

somecommand라는 디렉터리의 경로가 아닌 홈 디렉터리 아래의 경로를 에 전달합니다 ~. 그러나 이는 파일 이름 확장을 트리거하는 인수로 인해 종종 바람직하지 않은 효과도 발생합니다 ==.

somecommand foo==bar

foo=/bin/bar명령이 at 에 있으면 통과합니다. 명령을 문자 그대로 전달하려면 최소한 등호를 사용하여 인용해야 합니다.bar$PATH/bin/bar==

somecommand foo=\=bar
somecommand foo\==bar

새로운 완성 시스템에서는 이것이 내부적으로 처리됩니다._default. =활성화하지 않고 파일 이름 완성을 얻으 려면 동일한 효과를 얻으려면 magic_equal_subst재정의하거나 래핑해야 합니다 . _default예를 들어:

autoload +X -U _default
functions[_default]="setopt local_options magic_equal_subst; $functions[_default]"

관련 정보