การแทรกบรรทัดว่างในกลุ่ม?


25

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

คำตอบ:


10

ปลั๊กอินที่ไม่มีการติดตั้งทั้งของ Tim Pope รวมถึงปลั๊กอิน LineJugglerของฉันเองให้[<Space>และ]<Space>การแมปเพื่อเพิ่ม[count]บรรทัดว่างด้านบน / ใต้บรรทัดปัจจุบัน

โดยพื้นฐานแล้วมันจะลดลงถึงสิ่งนี้:

nnoremap <silent> ]<Space> :<C-u>put =repeat(nr2char(10),v:count)<Bar>execute "'[-1"<CR>
nnoremap <silent> [<Space> :<C-u>put!=repeat(nr2char(10),v:count)<Bar>execute "']+1"<CR>

ตอนนี้ฉันใช้สิ่งนี้ดังนั้นฉันจึงทำเครื่องหมายว่านี่เป็นโซลูชัน "ถูกต้อง"; แต่คำตอบทั้งหมดที่นี่ยอดเยี่ยม
Andrew Ferrier

เคล็ดลับที่ดีแม้ว่าฉันต้องการแผนที่ <Space>oและ <Space>Oแทน
simlev

26

ฉันใช้มันแล้ว

map <Enter> o<ESC>
map <S-Enter> O<ESC>

ฉันใน.vimrcปีที่ผ่านมา

กดEnterเพื่อแทรกบรรทัดว่างเปล่าด้านล่างปัจจุบันShift + Enterเพื่อแทรกบรรทัดด้านบน


ฉันกำลังทำเครื่องหมายที่ถูกต้องนี้เพราะมันเป็นทางออกที่ง่ายที่สุดแม้ว่าคำตอบเหล่านี้จะดี
Andrew Ferrier

ง่ายมาก! นี่ควรเป็นคำตอบที่ยอมรับได้!
Sheharyar

หากคุณไม่ต้องการให้เคอร์เซอร์เคลื่อนที่เมื่อคุณกด Enter ให้วางkที่ส่วนท้ายของแผนที่แรกและjที่ส่วนท้ายของแผนที่ที่สอง
zondo

1
โปรดทราบว่าการทำแผนที่ Shift-Enter ใช้งานได้กับเวอร์ชัน GUI ของ vim เท่านั้นไม่ใช่เวอร์ชันเทอร์มินัล stackoverflow.com/questions/16359878/vim-how-to-map-shift-enter
ishmael

7

อีกวิธีหนึ่งในการแทรกบรรทัดด้านบนหรือด้านล่าง:

nnoremap <Enter> :call append(line('.'), '')<CR>
nnoremap <S-Enter> :call append(line('.')-1, '')<CR>

โปรดทราบว่าการแก้ปัญหาจาก romainl และ Mr Shunz จะย้ายเคอร์เซอร์ไปยังบรรทัดที่แทรกใหม่ในขณะที่สิ่งนี้และอีกอันจาก Ingo Karkat จะเก็บเคอร์เซอร์ไว้ที่จุดเดียวกัน


1

ไม่ไม่มีคำสั่งในตัวสำหรับสิ่งนั้น

การแมปเหล่านี้ทำสิ่งที่คุณต้องการ:

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