วิธีปิดใช้งานการแก้ไขอัตโนมัติของ zsh บางส่วน


36

ฟังก์ชั่นการแก้ไขอัตโนมัติของ zsh มีประโยชน์มากสำหรับฉัน แต่มันก็ไม่ได้ให้ผลลัพธ์ที่เหมาะสมเสมอไป

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

แต่สิ่งที่ฉันต้องการคือสิ่งที่เป็นตัวเลือกที่ไม่เคยหยุดที่จะแก้ไขคำสั่งเช่นนั้นตลอดไป

ฉันจะทำสิ่งนี้ได้อย่างไร

คำตอบ:


53

คุณสามารถแจ้ง zsh ว่าไม่ควรแก้ไขอัตโนมัติในคำสั่งเฉพาะด้วยการใช้นามแฝงกับคำนำหน้า 'nocorrect' ใน. zshrc ของคุณ (ตัวอย่างที่นี่: http://dzen.geekmode.org/wiki/wiki.cgi/-main/ZshConfiguration ) :

alias vim='nocorrect vim' 

อีกทางเลือกหนึ่ง - หากกระบวนการที่อนุญาตพิเศษนี้ทำให้คุณหงุดหงิดเกินไปคุณสามารถปิดการแก้ไขอัตโนมัติได้อย่างสมบูรณ์ด้วยสิ่งต่อไปนี้ใน. zshrc ของคุณ

สำหรับ zsh รุ่นที่ใหม่กว่าใช้:

 unsetopt correct

สำหรับ zsh เวอร์ชันเก่าใช้:

 unsetopt correct-all

แก้ไขเพื่อเพิ่ม: นี่คือการสนทนาก่อนหน้านี้ในเรื่องนี้ - ข้อยกเว้นสำหรับคุณสมบัติ zsh correctall?


1
ในขณะที่งานนี้เมื่อคำสั่งที่เป็นกลุ่มที่เริ่มต้น bundle exec cucumber <some_specific_feature> && bundle exec rspec <some_specific_spec>แต่ไม่ทำงานสำหรับคำสั่งเช่น ฉันได้เพิ่มนามแฝงสำหรับ rspec เคล็ดลับใด ๆ
Martin Foot

@MartinFoot: หากคุณใช้ oh-my-zsh ปลั๊กอินตัวรวบรวมอาจช่วยคุณได้: coderwall.com/p/weixga
brafales

1
ในเวอร์ชั่นใหม่unsetopt correct_allเปลี่ยนเป็นunsetopt correct
antitoxic

@antitoxic: ฉันต้องการค้นหาสิ่งที่ "รุ่นใหม่" ในแง่ของหมายเลขรุ่นหมายถึง แต่แม้ในการชำระเงิน git วันนี้ (zsh 5.0.2 + 31433) zshoptionsสถานะ manpage สำหรับCORRECT_ALL: พยายามแก้ไขการสะกดของอาร์กิวเมนต์ทั้งหมดในบรรทัด . ยิ่งกว่านั้นทั้งรายการของผู้ชายCORRECTและCORRECT_ALLไม่เปลี่ยนแปลงอย่างน้อยตั้งแต่ปี 2008 ดังนั้นฉันจึงพลาดจุดของคุณไป คุณช่วยอธิบายสิ่งที่คุณนำไปสู่คำชี้แจงของคุณได้ไหม?!
mpy

ฉันต้องการเพิ่ม: เรื่องคำสั่งโหลด! ตรวจสอบให้แน่ใจว่าคุณเพิ่ม unsetopt หลังจากหา oh-my-zsh ... เสียเวลาไปมาก
oma

22

ฉันคิดว่าฉันพบคำตอบที่ดีกว่านี้

ฉันไม่แน่ใจเกี่ยวกับรุ่นและ whatnot แต่ดูเหมือนว่าcorrect_allควรแก้ไขคำสั่งและข้อโต้แย้งในขณะที่correctแก้ไขคำสั่งเท่านั้นจึงกำจัดพฤติกรรมที่น่ารำคาญนี้

นี่คือสิ่งที่ฉันมีในไฟล์กำหนดค่าของฉัน

unsetopt correct_all  
setopt correct

นี่คือคำตอบที่แท้จริง correct-allไม่ปรากฏว่าเป็นตัวเลือกจริงในเอกสารใด ๆ ที่ฉันสามารถค้นหาหรือในชีวิตจริง correct_allมัน ขอบคุณ!
Jamey

ฉันได้ setopt correctall จากzsh.sourceforge.net/Intro/intro_16.html
zzapper

คุณคือฮีโร่ของฉัน!
Martin K

หากคุณใช้ oh-my-zsh ให้แน่ใจว่าคุณใส่สองบรรทัดหลังจากนั้นsource $ZSH/oh-my-zsh.shมิฉะนั้นจะไม่ทำงาน ดูเหมือนว่า oh-my-zsh จะรีเซ็ตตัวเลือก correct_all
แมตต์

0

ฉันประสบปัญหาเมื่อใช้งานrspecผ่านzeusและฉันต้องการคงการตั้งค่าที่ถูกต้องโดยอัตโนมัติเนื่องจากดูเหมือนว่าจะทำงานได้ทุกอย่างยกเว้น rspecฉันจึงไม่เคยลองคำแนะนำอื่น ๆ ข้างต้น

สิ่งที่ฉันต้องทำคือnocorrectZeus เอง:

alias zeus = 'nocorrect zeus'


0

ฉันสามารถปิดการใช้งานการแก้ไขอัตโนมัติโดยใช้

ENABLE_CORRECTION="false"

ฉันใช้ zsh รุ่น 5.7.1


-1

ในกรณีที่คุณใช้ oh-my-zsh:

unsetopt correct_all

จะปิดใช้งานการแก้ไขอัตโนมัติทั้งหมด

การตั้งชื่อแทนสำหรับข้อยกเว้น (ดูลิงค์ด้านล่าง) ไม่ได้ทำเคล็ดลับสำหรับฉัน

https://github.com/robbyrussell/oh-my-zsh/blob/master/lib/correction.zsh

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.