그러나이 경우 솔루션은 다음과 같이 간단해야합니다.
설명은 약간 까다롭기 때문에 간단히 인용하십시오. man zshparam
ZLE_REMOVE_SUFFIX_CHARS
/ ZLE_SPACE_SUFFIX_CHARS
이 매개 변수는 라인 편집기에서 사용됩니다. 경우에 따라 완성 시스템에서 추가 한 접미사 (일반적으로 공백 또는 슬래시)는 다음 편집 명령이 삽입 가능한 문자가 아니거나 문자가 접미사를 제거해야한다고 표시되어 자동으로 제거됩니다.
이러한 변수에는 접미사를 제거하는 문자 집합이 포함될 수 있습니다. 경우 ZLE_REMOVE_SUFFIX_CHARS
설정, 그 문자는 접미사를 제거 할 원인이됩니다; 경우 ZLE_SPACE_SUFFIX_CHARS
설정, 그 문자는 접미사를 제거하고 공백으로 대체하게됩니다.
경우 ZLE_REMOVE_SUFFIX_CHARS
설정되지 않은, 기본 동작은 동일합니다 :
ZLE_REMOVE_SUFFIX_CHARS=$' \t\n;&|'
경우 ZLE_REMOVE_SUFFIX_CHARS
설정되어 있지만 비어, 문자는 일절이 동작이 없습니다. ZLE_SPACE_SUFFIX_CHARS
다음과 같이 우선합니다.
ZLE_SPACE_SUFFIX_CHARS=$'&|'
문자 &
와 |
접미사를 제거하지만 공백으로 대체합니다.
차이점을 설명하기 위해 옵션 AUTO_REMOVE_SLASH
이 적용되고 디렉토리 DIR이 완료 /
되었고 다음에 사용자 가 입력하는 디렉토리가 추가되었다고 가정하십시오 &
. 기본 결과는 DIR&
입니다. 로 ZLE_REMOVE_SUFFIX_CHARS
설정했지만 &
결과 를 포함하지 않은 경우는 DIR/&
입니다. 로 ZLE_SPACE_SUFFIX_CHARS
설정 &
하면 결과가 포함됩니다 DIR &
.
특정 완료는 여기에 설명 된 값을 대체하는 자체 접미사 제거 또는 대체 동작을 제공 할 수 있습니다.
zsh -f
(구성로드를 건너 뛰려면)를 사용하여이 작업을 다시 시도 하십시오. zsh는 더 이상 그렇게하지 않을 것입니다. 그렇다면, 어떻게 발생하는지 알아 내기 위해 oh-my-zsh 를 파헤쳐 야 할 것 입니다. ;-)