เป็นกลุ่ม: แทรกบรรทัดว่างด้านบนบรรทัดปัจจุบัน (ไม่เปิดคือไม่เข้าสู่โหมดแทรก)


21

มีวิธีการแทรกบรรทัดใหม่เหนือกระแสโดยไม่ต้องเปิดบรรทัด (ดังนั้นโดยไม่ต้องเข้าสู่โหมดแทรก)? นั่นคือเหมือน "O" แต่ไม่มีการเปิด


2
"การเปิดบรรทัด" หมายความว่าอะไร
Matteo Riva

"การเปิดบรรทัด" หมายถึงการสร้างโหมดปกติเพื่อแทรกโหมดซึ่งเป็นสิ่งที่เกิดขึ้นเมื่อคุณกด "O" (oh)
tmadsen

คำตอบ:


9

ผมใช้ปลั๊กอินทิมสมเด็จพระสันตะปาปาunimparedซึ่งมีคำสั่งเฉพาะสำหรับวัตถุประสงค์นี้:

[<space>

และถ้าคุณต้องการเพิ่มช่องว่างหลังบรรทัดที่คุณอยู่:

]<space>


29

Oความหมายของการคำขอของคุณ

Oเหตุผลเมื่อแทรกบรรทัดใหม่ดังกล่าวข้างต้นจะเป็น

วิธีแทรกก่อนเคอร์เซอร์: i
หลัง: a
ก่อนบรรทัด (home): I
ผนวกที่ท้ายบรรทัด:A

ฉันคิดว่าคุณจะมาใกล้ที่สุดIซึ่งจะวางเคอร์เซอร์ที่จุดเริ่มต้นของบรรทัด


บางทีฉันอาจจะไม่ชัดเจน สถานการณ์เป็นดังนี้: ฉันอยู่ในโหมดปกติและต้องการแทรกบรรทัดว่างเหนือบรรทัดที่ฉันกำลังใช้อยู่ในขณะที่อยู่ในโหมดปกติ การกด "O" ทำให้ฉันอยู่ในโหมดแทรก อาจจะมีวิธีที่จะทำไม่ได้และที่ ok เพียงแค่คิดว่าฉันจะถาม :)
tmadsen

3
เพียงจับคู่มันm`O+Esc`
Josh K

1
ความคิดที่ดียังไม่ได้พิจารณาว่า ทำ: noremap <leader> O O <ESC>
tmadsen

2tmadsen: คุณสามารถแมป <yourkey> O <ESC> นี้
Dzung Nguyen

9
:h append()

มันจะไม่ย้ายเคอร์เซอร์มันจะช่วยให้คุณแทรกหลายบรรทัด (ว่างหรือไม่) ตามที่คุณต้องการและจะไม่แก้ไขเครื่องหมายตำแหน่งก่อนหน้า

call append(line('.')-1, '')

ใช่นั่นคือ +1 เรียบร้อย! / ฉันเปลี่ยน vimrc ของเขา
akira

มันมีข้อได้เปรียบเล็กน้อยเมื่อพูดถึงการเขียนสคริปต์ เป็นบิตมากเกินไปที่จะพิมพ์เป็นอย่างอื่น
Luc Hermitte

+1 สำหรับโซลูชันที่ทำงานโดยไม่คำนึงว่าจะมีการตั้งค่าอย่างไรformatoptions
Micah Smith

5

คุณสามารถแมปคีย์หรือลำดับคีย์ใดก็ได้ที่คุณต้องการ

m`O<ESC>``

สิ่งนี้จะแทรกบรรทัดว่างไว้เหนือบรรทัดปัจจุบันที่ทำให้คุณอยู่ในโหมดปกติและไม่มีการเปลี่ยนตำแหน่งเคอร์เซอร์


ดังนั้นคำสั่งในการจับคู่สิ่งนี้กับ Alt-O จะเป็น: map <Mo> m`O <ESC> ``
K Robinson

ถูกต้อง.
Matteo Riva

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