Zsh — 더욱 지능적인 자동 수정

Zsh — 더욱 지능적인 자동 수정

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될 것으로 예상됩니다 . 또한 의 호스트 매개변수 , 첫 번째 인수 등을 수정하려고 시도하는데 이는 정말 짜증나는 일입니다..zileman-Csshsudo

영향을 받는 모든 명령에 대해 set etc 등의 수단을 동원해야 alias man='nocorrect man'하지만 분명히 이것이 최선의 해결책은 아닙니다. 나는 또한 CORRECT단지 .CORRECT_ALLCORRECT

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 패키지를 사용할 수 있는지, 기본 구성을 제대로 로드하고 있는지 확인해야 합니다. 질문에 나열한 것과 같은 표준 명령에 대해 여러 가지 수동 재정의를 설정할 필요가 없습니다.

관련 정보