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? 

무엇? zileoptions 으로 호출되는 시간이 수정되기를 바랍니다 .zile. 또한 호스트 매개변수, 첫 번째 매개변수 등을 수정하려고 시도하는데 이는 정말 짜증나는 일입니다.man-Csshsudo

영향을 받는 각 명령에 대해 목발(설정 등)을 사용해야 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 패키지와 기본 구성이 올바르게 로드되었는지 확인해야 합니다. 질문에 나열한 것과 같은 표준 명령에 대해 여러 가지 수동 재정의를 설정할 필요가 없습니다.

관련 정보