ฉันมักจะพบว่าฉันมีความจำเป็นต้องแทรกบรรทัดว่างทั้งด้านล่างหรือด้านบนบรรทัดปัจจุบันเมื่อแก้ไขในกลุ่ม oและOจะทำเช่นนี้ แต่พวกเขาจะเปลี่ยนเป็นโหมดแทรกซึ่งน่ารำคาญ มีคำสั่งในตัวที่จะทำสิ่งนี้ซึ่งจะยังคงอยู่ในโหมดปกติหรือไม่?
ฉันมักจะพบว่าฉันมีความจำเป็นต้องแทรกบรรทัดว่างทั้งด้านล่างหรือด้านบนบรรทัดปัจจุบันเมื่อแก้ไขในกลุ่ม oและOจะทำเช่นนี้ แต่พวกเขาจะเปลี่ยนเป็นโหมดแทรกซึ่งน่ารำคาญ มีคำสั่งในตัวที่จะทำสิ่งนี้ซึ่งจะยังคงอยู่ในโหมดปกติหรือไม่?
คำตอบ:
ปลั๊กอินที่ไม่มีการติดตั้งทั้งของ 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>
<Space>oและ <Space>Oแทน
ฉันใช้มันแล้ว
map <Enter> o<ESC>
map <S-Enter> O<ESC>
ฉันใน.vimrcปีที่ผ่านมา
กดEnterเพื่อแทรกบรรทัดว่างเปล่าด้านล่างปัจจุบันShift + Enterเพื่อแทรกบรรทัดด้านบน
kที่ส่วนท้ายของแผนที่แรกและjที่ส่วนท้ายของแผนที่ที่สอง
อีกวิธีหนึ่งในการแทรกบรรทัดด้านบนหรือด้านล่าง:
nnoremap <Enter> :call append(line('.'), '')<CR>
nnoremap <S-Enter> :call append(line('.')-1, '')<CR>
โปรดทราบว่าการแก้ปัญหาจาก romainl และ Mr Shunz จะย้ายเคอร์เซอร์ไปยังบรรทัดที่แทรกใหม่ในขณะที่สิ่งนี้และอีกอันจาก Ingo Karkat จะเก็บเคอร์เซอร์ไว้ที่จุดเดียวกัน
ไม่ไม่มีคำสั่งในตัวสำหรับสิ่งนั้น
การแมปเหล่านี้ทำสิ่งที่คุณต้องการ:
nnoremap <leader>o o<Esc>
nnoremap <leader>O O<Esc>