ยกเลิกเสร็จสิ้น


11

โดยทั่วไปแล้วการแทรกโหมดเสร็จสิ้น ( <C-n>) จะแทรกคำที่ถูกต้องในครั้งแรกที่ฉันกด<C-n>แต่ไม่เสมอไป ดังนั้นฉันต้องการให้ Vim แทรกการจับคู่ที่เห็นว่าดีที่สุดเมื่อฉันกด<C-n>แต่ก็ยังอนุญาตให้ฉันยกเลิกการแทรกนี้หลังจากนั้นหากการจับคู่ที่ถูกต้องไม่ปรากฏขึ้นหรือเป็นรายการยาว

แน่นอนฉันสามารถเขียนโค้ดพฤติกรรมนี้ได้ แต่ฉันรู้สึกว่าควรมีคีย์มาตรฐาน (- รวม) เพื่อทำสิ่งนี้ ใครบางคนสามารถชี้ให้ฉันในทิศทางที่ถูกต้อง?

คำถามโบนัส: มีคีย์อื่นที่ฉันสามารถใช้เพื่อให้ได้นัดที่ยาวที่สุด (เหมือนก่อนที่ฉันจะตี<C-n>)?

สำหรับสิ่งที่คุ้มค่าฉันกำลังใช้ completeopt=menu


1
คือctrl-uสิ่งที่คุณกำลังมองหา?
statox

ไม่ ctrl-u ดูเหมือนจะลบทั้งบรรทัด ฉันกำลังมองหาชุดค่าผสมที่ลบข้อความที่ถูกแทรกโดยการกด ctrl-n เท่านั้น
Octaviour

ความคิดแรกของฉันคือ "ไม่ cg ยกเลิกการทำงานปกติที่นี่หรือไม่" แล้วฉันก็รู้ว่านั่นคือ emacs เพียงไม่กี่วันของการเรียนรู้เมื่อหลายปีก่อนทำให้ฉันเสียหายฉันจะอาบน้ำในแม่น้ำศักดิ์สิทธิ์และชำระตัว!
sundar - Reinstate Monica

คำตอบ:


13

จาก:h complete_CTRL-E:

                                                        * complete_CTRL-E *
เมื่อเสร็จสิ้นการใช้งานคุณสามารถใช้ CTRL-E เพื่อหยุดมันและกลับไปที่
ข้อความที่พิมพ์มา แต่เดิม CTRL-E จะไม่ถูกแทรก

นอกจากนี้ถ้าคุณพูดพิมพ์aจากนั้น^Pคุณจะได้รับรายการที่ยาวมากคุณสามารถกด^N เพื่อกลับไปที่ข้อความดั้งเดิมของคุณโดยที่ป๊อปอัปที่เสร็จสมบูรณ์ยังคงทำงานอยู่ จากนั้นคุณสามารถพิมพ์อักขระพิเศษเพื่อ จำกัด รายการที่สมบูรณ์ให้แคบลง


นั่นคือสิ่งที่ฉันกำลังมองหา ฉันไม่ได้ตระหนักว่า ctrl-p จะนำฉันกลับไปที่อินพุตต้นฉบับ ขอบคุณ
Octaviour

2
@Octaviour ฉันพบว่า ctrl-p โดยทั่วไปแล้วจะมีประโยชน์มากกว่า ctrl-n เพราะมันค้นหาการจับคู่ที่ใกล้ที่สุดก่อน (แทนหลังจาก) ที่คุณอยู่ ดังนั้นถ้าคุณได้เขียนเพียงคำ Ctrl-P จะแสดงให้คุณได้อย่างรวดเร็วคำเดียวกันถ้าคุณจำเป็นต้องทำซ้ำได้ (เช่นใช้ตัวแปรเดียวกันอีกครั้งในรหัส)
Shahbaz

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