เป็นกลุ่มเคอร์เซอร์ย้ายหนึ่งตัวในโหมดแทรกโดยไม่มีปุ่มลูกศร


9

สิ่งนี้อาจดูเกินความจริงเล็กน้อย แต่ฉันเปลี่ยนเป็นกลุ่มและตอนนี้ฉันมีความสุขมากกับเวิร์กโฟลว์ ฉันพยายามที่จะตีสอนตัวเองไม่ให้ใช้ปุ่มลูกศรเนื่องจากการวางมือบนปุ่มอัลฟ่าตลอดเวลานั้นเป็นเรื่องใหญ่เมื่อเขียน ดังนั้นเมื่อฉันต้องการนำทางฉันออกจากโหมดแทรกให้ย้ายในโหมดปกติและกลับมาในโหมดแทรก

มีข้อยกเว้นว่านี่คือสิ่งที่รบกวนจริง: ฉันใช้clang completeกับตัวอย่างและsuper tabที่ดี ยกเว้นทุกครั้งที่ฉันได้รับฟังก์ชั่น auto เสร็จสมบูรณ์หลังจากที่ฉันกรอกพารามิเตอร์ที่ฉันทิ้งไว้กับเคอร์เซอร์ก่อน)ดังนั้นเพื่อดำเนินการต่อฉันต้องย้ายเคอร์เซอร์หนึ่งตัวไปทางขวา ในขณะที่คุณสามารถจินตนาการนี้เกิดขึ้นบ่อยมาก

ตัวเลือกเดียวที่ฉันมี (เท่าที่ฉันรู้) คือ: Esclaหรือและฉันไม่มีความสุขกับตัวเลือกทั้งสอง อันแรกทำให้ฉันกดปุ่ม 3 ครั้งเพียงแค่เลื่อนเคอร์เซอร์ 1 ตัวอักษรตัวที่สองทำให้ฉันขยับมือไปยังปุ่มลูกศร ทางเลือกที่สามจะเป็นแผนที่หรือภาพช้าไปCTRL-L

ดังนั้นวิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร?


//snippets (clang complete + supertab):
foo($`param1`, $`param2`)

//after completion:
foo(var1, var2|)
              ^ ^
              | |
     I am here  |
                 Need to be here

| หมายถึงตำแหน่งเคอร์เซอร์


ด้วยปัญหาที่คล้ายกันฉันลงเอยด้วยการแฮ็คสคริปต์ที่เสร็จสมบูรณ์เพื่อไม่ให้ปิดเสียงก้อง)หากมีอาร์กิวเมนต์อย่างน้อยหนึ่งรายการในฟังก์ชัน ดังนั้นฉันจึงพิมพ์ด้วยมือ มีประโยชน์มากขึ้นในขณะนี้
Dmitry Frank

เกิดอะไรขึ้นเมื่อคุณพิมพ์)ฉันเดิมพันมันข้ามไปโดยไม่ต้องใส่จริง (ฉันไม่ได้ใช้ปลั๊กอินนี้)
FDinoff

@FDinoff ไม่มันเพิ่งแทรกเข้าไปอีก)
bolov

1
@bolov ที่น่าผิดหวัง คุณอาจสามารถดึงรหัสที่ทำจากคู่อัตโนมัติได้ ฉันไม่รู้ว่าปลั๊กอินจะขัดแย้งกับพวกเขาหรือไม่ ตัวเลือกอื่นคือใช้<C-O>lเพื่อออกจากโหมดปกติสำหรับคำสั่งโหมดปกติ 1 คำสั่ง
FDinoff

คำตอบ:


5

แผนที่)จะข้ามไปที่มีอยู่)ถ้ามันเป็นวงเล็บปิด

inoremap <expr> )  strpart(getline('.'), col('.')-1, 1) == ")" ? "\<Right>" : ")"

นำมาจาก: http://vim.wikia.com/wiki/Automatically_append_closing_characters


คำตอบเก่า

:h i_CTRL-O รันหนึ่งคำสั่งกลับไปที่โหมดแทรก

Ctrl-ol จะย้ายคุณไปทางขวาหนึ่งอักขระจากนั้นให้คุณกลับเข้าสู่โหมดแทรก

อีกทางเลือกหนึ่งคือปลั๊กอินวงเล็บช่วยให้คุณเพียงแค่พิมพ์วงเล็บปิด)และพวกเขาจะแทนที่หนึ่งที่มีอยู่


1
วิธีนี้ใช้ไม่ได้หาก)เป็นอักขระตัวสุดท้ายในบรรทัด (และสิ่งนี้เกิดขึ้นบ่อยครั้งเมื่อคุณเขียนโค้ด) CTRL-O aแต่ทำงานได้ ดังนั้นฉันเดาว่าเราจะบันทึกหนึ่งคีย์ :)
bolov

True del )เป็นอักขระเพียงสองตัวเท่านั้นและจะทำให้คุณอยู่ในวงเล็บปิดเสมอ
Brett Y

ข้ามการทำงาน ')' อย่างมีเสน่ห์ขอบคุณ
bolov

1

พิมพ์ต่อไปนี้เพื่อค้นหาปุ่มควบคุมที่ใช้ในโหมดแทรก

:help insert-index

ไม่ใช้ ctrl-b แต่คุณอาจต้องการสละคีย์อื่น ๆ

imap <c-b> <right>

มันทำงานเพื่อเลื่อนเคอร์เซอร์ไปทางขวาหนึ่งตัวถ่าน หรือทำแผนที่ถ่านสองชั้น

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