setopt CORRECT
수정을 완전히 끄거나 제한 (명령만 수정) 하지 않고 Zsh가 현재 디렉터리의 파일이 포함된 파일이 아닌 인수 수정 시도를 중지하도록 할 수 있습니까 ?
예를 들어 CORRECT_ALL
를 로 설정 하면 setopt
다음과 같은 일이 발생합니다.
gris@arefiev: ~% cd srcc
change srcc to src-nyae? n
지금까지는 좋습니다(인수는 cd
파일이어야 함). 하지만,
gris@arefiev: ~% man zile
change zile to .zile-nyae?
무엇? 옵션 과 함께 호출 되면 수정 zile
될 것으로 예상됩니다 . 또한 의 호스트 매개변수 , 첫 번째 인수 등을 수정하려고 시도하는데 이는 정말 짜증나는 일입니다..zile
man
-C
ssh
sudo
영향을 받는 모든 명령에 대해 set etc 등의 수단을 동원해야 alias man='nocorrect man'
하지만 분명히 이것이 최선의 해결책은 아닙니다. 나는 또한 CORRECT
단지 .CORRECT_ALL
CORRECT
Zsh는 zsh 4.3.17 (x86_64-unknown-linux-gnu)
데비안 측의 말입니다.
업데이트: 여기 나의.zshrc
http://pastebin.com/67mykgRv
답변1
Zsh에는 많은 완성 세트가 제공되지만 수정 세트는 더 적습니다. 완성이 유용하지만 수정이 아닌 명령이 많이 있습니다. 예를 들어, 인수를 완성(기존 디렉터리 내에 디렉터리를 생성하기 위해)하는 것이 유용 mkdir
하지만 이를 수정하지 않는 것이 좋습니다. 이 correct_all
옵션은 모든 곳에서 수정을 활성화하므로 매우 가혹합니다. 안타깝게도 일련의 올바른 입력이 제공되는 경우에만 수정할 수 있는 옵션이 없습니다.
다음을 설정하여 특정 명령에 대한 수정 사항을 사용자 정의할 수 있습니다.corrections
태그를 지정하고 수정 수행 여부를 사용자 정의합니다._correct
의 일부matcher-list
아니면. 이는 다음과 같이 설정됩니다.zstyle
내장.
답변2
배포판에 뭔가 빠진 것 같습니다. 대부분의 ZSH 구현에는 명령 및 인수 위치를 기반으로 지능적으로 완료되는 ZSH에 대한 사전 구성된 완료 설정의 대규모 컬렉션이 함께 제공됩니다. 예를 들어 내 시스템에는zsh 완성패키지. 설치되고 올바르게 로드되면 man
파일이 아닌 맨 페이지에 있는 항목으로만 완료되고 ssh
호스트 이름으로만 ssh -l
완료되며 시스템 사용자 이름으로 완료되지만 그 후에는 ssh -l caleb
호스트 이름 등으로 완료됩니다.
어떤 zsh 패키지를 사용할 수 있는지, 기본 구성을 제대로 로드하고 있는지 확인해야 합니다. 질문에 나열한 것과 같은 표준 명령에 대해 여러 가지 수동 재정의를 설정할 필요가 없습니다.