나는 이것을 검색할 방법을 찾을 수 없고 이것이 이미 인터넷에서 설명되었는지 확인할 수 없습니다.
명령줄에 다음이 있고 <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]"