ฉันมักจะพบว่าฉันมีความจำเป็นต้องแทรกบรรทัดว่างทั้งด้านล่างหรือด้านบนบรรทัดปัจจุบันเมื่อแก้ไขในกลุ่ม 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>