ไปที่อักขระที่ไม่ใช่ช่องว่างสุดท้ายของบรรทัดก่อนหน้า / ถัดไปหรือไม่


10

ฉันชอบปุ่ม-และ<C-M>โหมดปกติสำหรับไปที่อักขระที่ไม่ใช่ช่องว่างตัวแรกของบรรทัดก่อนหน้า / ถัดไป

มีคีย์ที่สอดคล้องกันสำหรับการไปยังอักขระที่ไม่ใช่ช่องว่างสุดท้ายบนบรรทัดก่อนหน้า / ถัดไปหรือไม่

คำตอบ:


13

g_ย้ายเคอร์เซอร์ไปที่อักขระที่ไม่ใช่ช่องว่างสุดท้ายของบรรทัดปัจจุบัน จาก Vim's :help g_:

g_          To the last non-blank character of the line and
            [count - 1] lines downward |inclusive|. {not in Vi}

น่าเสียดายที่ฉันคิดว่ามีเพียงตัวเลือกเดียวที่คุณต้องย้ายไปยังอักขระที่ไม่ใช่ช่องว่างของบรรทัดก่อนหน้า / ถัดไปคือkg_หรือjg_ตามลำดับหรือใช้การนับเพื่อเลื่อนลง

อย่างไรก็ตามมันเป็นเรื่องง่ายที่จะแมปพวกเขากับสิ่งที่ง่ายขึ้น:

nnoremap <F3> kg_
nnoremap <F4> jg_

1
นอกจากนี้โปรดทราบว่า2g_จะใช้งานได้หากคุณต้องการไปที่อักขระช่องว่างที่ไม่ใช่ช่องว่างสุดท้ายในบรรทัดถัดไป อย่างไรก็ตามไม่สามารถใช้กับบรรทัดก่อนหน้าได้ ข้อดีของ2g_มันคือมันสามารถทำซ้ำได้ด้วย.
EvergreenTree

1
การเคลื่อนไหว (เช่นg_) ไม่สามารถทำซ้ำ.ได้ โดยทั่วไปสิ่งที่เปลี่ยนสถานะของบัฟเฟอร์เท่านั้นที่สามารถทำซ้ำได้
tommcdo

แม้ว่าเมื่อรวมกับโอเปอเรเตอร์แล้ว บางทีนั่นอาจเป็นสิ่งที่คุณอ้างถึง
tommcdo

อาฉันไม่ได้ตระหนักถึงการเคลื่อนไหวที่ไม่สามารถทำซ้ำได้ ฉันควรดูเอกสารก่อนที่จะพูดอะไร
EvergreenTree

0

หากคุณหมายถึงอักขระที่ไม่ใช่ช่องว่างถัดไปของบรรทัดก่อนหน้า / ถัดไป (โดยไปในแนวตั้ง) ให้ลอง:

map <C-k> :call search('\%' . virtcol('.') . 'v\S', 'bW')<CR>
map <C-j> :call search('\%' . virtcol('.') . 'v\S', 'wW')<CR>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.