단어의 시작 부분에서만 완성

단어의 시작 부분에서만 완성

ZSH 자동 완성에 문제가 있는데 이를 제거하는 데 적합한 키 작업을 찾을 수 없습니다.

예를 들어 다음과 같은 파일의 경우

$ ls
Accelion, titi toto tata

나는 쓰고 싶다:

$ ls cc<TAB>

그리고 얻다 _아니요_completion 대신 Accelion.

현재 설정된 옵션은 다음과 같습니다.

$ set -o | grep " on"
alwaystoend           on
autocd                on
autonamedirs          on
autopushd             on
nobeep                on
cdablevars            on
extendedhistory       on
noflowcontrol         on
nohistbeep            on
histexpiredupsfirst   on
histignoredups        on
histignorespace       on
histverify            on
incappendhistory      on
interactive           on
interactivecomments   on
nolistambiguous       on
nolistbeep            on
longlistjobs          on
nonomatch             on
promptsubst           on
pushdignoredups       on
shinstdin             on

zle옵션(및 덤프 방법) 과 같은 추가 세부정보가 필요하면 알려주세요.

편집하다:zsh4.3.17(x86_64-redhat-linux-gnu)

답변1

zsh어떤 버전을 사용하고 있는지 언급하지 않았습니다 . 버전 4를 가정하고 있습니다.

zsh은 아마도 익숙한 것처럼 실제 완료 대신 일치를 먼저 수행합니다. 이 동작은 완성자를 주문하고 선택적으로 사용자 정의하여 사용자 정의할 수 있습니다. 해당 작업을 수행하는 방법에 대한 자세한 내용은 다음에서 확인할 수 있습니다.이 가이드.

보고 있는 동작은 잠재적으로 대소문자를 구분하지 않는 일치입니다.

zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'

가이드를 너무 깊이 파고들지 않고 이 동작을 수정하는 가장 빠른 방법은 위와 유사한 줄을 찾아 주석 처리하거나 실행 autoload -Uz compinstall한 다음 을 실행하는 것입니다 compinstall. 그러면 기본 마법사를 통해 동작 방식을 사용자 정의할 수 있습니다 zsh. 몇 가지 질문을 한 다음 ~/.zshrc옵션에 더 익숙해지면 사용자 정의할 수 있는 간단한 항목을 만듭니다. ~/.zshrc유지하고 싶은 행동이 있을 경우 참조할 수 있도록 먼저 복사하세요 .

관련 정보