ฉันจะยกเลิก fc โดยไม่ต้องดำเนินการคำสั่งได้อย่างไร


13

คำสั่ง fc จะอนุญาตให้แก้ไขด้วยสายตาของคำสั่งก่อนหน้า หากฉันเปลี่ยนใจในเครื่องมือแก้ไขฉันจะหยุดคำสั่งไม่ให้ทำงานได้อย่างไร ในกลุ่มให้พิมพ์ q! หรือ q ทั้งสองผลลัพธ์ในคำสั่งที่กำลังดำเนินการและ CTRL-C ไม่ทำงานอย่างใดอย่างหนึ่ง เป็นตัวเลือกเดียวที่จะลบคำสั่งในตัวแก้ไขแล้ว wq?

คำตอบ:


17

จาก vi คุณสามารถพิมพ์:cqเพื่อออกโดยไม่บันทึกและใช้รหัสส่งคืนที่ไม่เป็นศูนย์ ในกรณีนี้คำสั่งจะไม่ถูกทำซ้ำ

หรือคุณสามารถระงับโปรแกรมแก้ไขctrl-zที่จะนำคุณกลับไปที่เชลล์โดยไม่ต้องทำซ้ำคำสั่ง คุณยังต้องfgเริ่มต้นตัวแก้ไขใหม่อีกครั้ง แต่ไฟล์ tmp จะไม่อยู่อีกต่อไปดังนั้นคุณสามารถออกจากตัวแก้ไขได้อย่างปลอดภัย หรือคุณสามารถkill -9 %แก้ไขนี้ถูกระงับ

ฉันเห็นด้วยมันอาจจะง่ายขึ้น แน่นอนคุณสามารถแก้ไขบรรทัดภายใน bash โดยใช้คำสั่ง vi หรือ emacs


vi ไม่มีคำสั่ง ": cq" คุณต้องการพิมพ์ ": q!" หรือไม่
Schily

@schily ขออภัยโดย vi ฉันได้รับเป็นกลุ่ม คุณสามารถอ่านเกี่ยวกับเสียงเรียกเข้าcqในQuickFIX
meuh

น่าเสียดายที่เสียงเรียกเข้าไม่เป็นไปตาม POSIX (นอกเหนือจากการปรับปรุงที่มีการเบี่ยงเบน) สำหรับความช่วยเหลือทั่วไปเป็นความคิดที่ดีที่จะไม่พึ่งพาการปรับปรุงที่ไม่ซ้ำใครในท้องถิ่นหรือของผู้ขาย BTW:: q! เพียงพอแล้วเนื่องจาก POSIX vi จะออก! = 0 ในกรณีนี้
Schily

@schily ขึ้นอยู่กับเสียงเรียกเข้าที่ติดตั้งน่าจะปลอดภัยในกรณีส่วนใหญ่และในกรณีนี้ผู้ถามโดยเฉพาะกล่าวq!ว่าไม่ได้ผลสำหรับพวกเขา
Michael Mrozek

2
นี่เป็นเพราะไม่มีข้อผิดพลาดและทำให้รหัสออกเป็น 0 ใน vi มันทำงานเพื่อพิมพ์: c (ผลลัพธ์ในข้อความคำสั่งที่ผิดกฎหมาย) แล้วพิมพ์: q! และข้อผิดพลาดที่จำได้นั้นส่งผลให้เกิดรหัสออก! = 0 อย่างไรก็ตามสิ่งนี้จะไม่ทำงานในกลุ่ม ข้อสมมติก่อนหน้าของฉันที่: q! ผลเสมอในรหัสทางออก! = 0 ผิด
Schily

3

บางทีวิธีที่ง่ายกว่าในการจดจำคือการลบคำสั่ง (dd ควรทำ) และออกจาก ( ZZหรือวิธีอื่นในการออกจากการบันทึกควรทำ) IMHO :cqค่อนข้างลึกลับ

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