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 compinstall
then 을 실행하는 것입니다 compinstall
. 그러면 기본 마법사를 통해 zsh
작동 방식을 사용자 정의할 수 있습니다 . 몇 가지 질문을 한 다음 ~/.zshrc
옵션에 더 익숙해지면 사용자 정의할 수 있는 간단한 질문을 만듭니다. ~/.zshrc
특정 행동을 유지하려는 경우 참조할 수 있도록 먼저 행동 의 복사본을 만드십시오.