Cara menonaktifkan koreksi otomatis zsh sebagian

36

Fungsi koreksi otomatis zsh sangat membantu bagi saya tetapi tidak selalu memberikan hasil yang tepat.

~$ sudo vim somefile
zsh: correct 'vim' to '.vim' [nyae]? 

Namun yang saya inginkan adalah sesuatu seperti opsi yang tidak pernah bisa menghentikannya untuk memperbaiki perintah seperti itu selamanya.

Bagaimana saya bisa melakukan ini?

Shou Ya
sumber

Jawaban:

53

Anda dapat memberi tahu zsh bahwa itu tidak seharusnya mengoreksi secara otomatis pada perintah-perintah tertentu dengan menggantinya dengan awalan 'tidak benar' di .zshrc Anda (contoh di sini: http://dzen.geekmode.org/wiki/wiki.cgi/-main/ZshConfiguration ) :

alias vim='nocorrect vim' 

Atau - jika proses daftar putih ini menjadi terlalu membuat frustrasi - Anda dapat menonaktifkan koreksi otomatis sepenuhnya dengan yang berikut di.

Untuk penggunaan versi zsh yang lebih baru:

 unsetopt correct

untuk versi lama penggunaan zsh:

 unsetopt correct-all

Diubah untuk menambahkan: inilah diskusi sebelumnya tentang hal ini - Pengecualian untuk fitur zsh correctall?

Soz
sumber
1
Meskipun ini berfungsi saat perintah vim di awal, tetapi tidak berfungsi untuk perintah seperti bundle exec cucumber <some_specific_feature> && bundle exec rspec <some_specific_spec>. Saya telah menambahkan alias untuk rspec. Ada tips?
Martin Foot
@ MartinFoot: jika Anda menggunakan oh-my-zsh, plugin bundler
brafales
1
Dalam versi baru unsetopt correct_allberubah menjadiunsetopt correct
antitoxic
@antitoxic: Saya ingin mencari apa arti "versi baru" dalam hal nomor versi, tetapi bahkan dalam checkout git hari ini (zsh 5.0.2 + 31433) zshoptionsmenyatakan halaman manual untuk CORRECT_ALL: Cobalah untuk memperbaiki ejaan semua argumen dalam satu baris . Lebih jauh, kedua entri pria untuk CORRECTdan CORRECT_ALLtidak berubah setidaknya sejak 2008. Jadi saya kehilangan poin Anda; dapatkah Anda jelaskan apa yang Anda tuju pada pernyataan Anda ?!
mpy
Saya ingin menambahkan: memuat pesanan penting! Pastikan Anda menambahkan unsetopt setelah sumber oh-my-zsh ... Menghabiskan banyak waktu saya.
oma
22

Saya pikir saya menemukan jawaban yang lebih baik untuk ini.

Saya tidak yakin tentang versi dan yang lainnya, tetapi tampaknya correct_allseharusnya memperbaiki perintah dan argumen, sementara correcthanya mengoreksi perintah, sehingga menghilangkan perilaku yang mengganggu ini.

Ini yang saya miliki di file konfigurasi saya

unsetopt correct_all  
setopt correct
Paulo Casaretto
sumber
Ini jawaban yang sebenarnya. correct-alltampaknya tidak menjadi opsi nyata dalam dokumentasi apa pun yang dapat saya temukan, atau dalam Kehidupan Nyata. Ini correct_all. Terima kasih!
Jamey
Saya telah menetapkan optallall
zzapper
Kamu adalah pahlawanku!
Martin K
Jika Anda menggunakan oh-my-zsh, pastikan Anda meletakkan kedua baris setelah source $ZSH/oh-my-zsh.shitu tidak berfungsi. Tampaknya oh-my-zsh akan mengatur ulang opsi correct_all.
Matt
0

Saya punya masalah ketika menggunakan rspecvia zeus, dan saya ingin menyimpan pengaturan koreksi-otomatis karena tampaknya berfungsi untuk semua hal lain kecuali rspec , jadi saya tidak pernah mencoba saran lainnya di atas.

Apa yang harus saya lakukan adalah nocorrectzeus sendiri:

alias zeus = 'nocorrect zeus'

IanVaughan
sumber
0

Saya dapat menonaktifkan penggunaan koreksi otomatis

ENABLE_CORRECTION="false"

Saya menggunakan zsh versi 5.7.1

rahul
sumber