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

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

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옵션(및 덤프 방법)과 같은 추가 세부정보가 필요한 경우 알려주시기 바랍니다.

편집하다:다루기 힘든4.3.17(x86_64-redhat-linux-gnu)

답변1

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

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

보고 있는 동작은 아마도 대소문자를 구분하지 않는 일치일 것입니다.

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

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

관련 정보