Memasukkan baris kosong di vim?


25

Saya cukup sering menemukan saya perlu memasukkan baris kosong di bawah atau di atas baris saat ini saat mengedit di vim. odan Oakan melakukan ini, tetapi mereka kemudian beralih ke mode insert, yang menjengkelkan. Apakah ada perintah bawaan untuk melakukan ini yang akan tetap dalam mode normal?

Jawaban:


10

Baik plugin Tim Pope yang tidak rusak maupun plugin LineJuggler saya sendiri menyediakan [<Space>dan ]<Space>memetakan untuk menambahkan [count]baris kosong di atas / di bawah baris saat ini.

Pada dasarnya, intinya adalah:

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>

Saya sekarang menggunakan ini, jadi saya telah menandai ini sebagai solusi "benar"; tetapi semua jawaban di sini bagus.
Andrew Ferrier

Tip yang bagus, meskipun saya lebih suka memetakan <Space>odan <Space>Osebaliknya.
simlev

26

Saya sudah menggunakan ini

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

di saya .vimrcselama bertahun-tahun.

Tekan Enter untuk memasukkan garis kosong di bawah ini, Shift + Enter untuk memasukkannya di atas.


Saya menandai ini dengan benar karena ini adalah solusi paling sederhana, meskipun semua jawaban ini baik.
Andrew Ferrier

Sangat sederhana! Ini harus menjadi jawaban yang diterima!
Sheharyar

Jika Anda tidak ingin kursor bergerak ketika Anda menekan Enter, letakkan kdi akhir peta pertama dan jdi akhir peta kedua.
zondo

1
Perhatikan bahwa pemetaan Shift-Enter hanya berfungsi dengan versi GUI dari vim, bukan versi terminal. stackoverflow.com/questions/16359878/vim-how-to-map-shift-enter
ishmael

7

Cara lain untuk menyisipkan baris di atas atau di bawah:

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

Perhatikan bahwa solusi dari romainl dan Mr Shunz akan memindahkan kursor ke baris yang baru dimasukkan, sedangkan ini dan juga yang dari Ingo Karkat akan menjaga kursor di tempat yang sama.


1

Tidak, tidak ada perintah bawaan untuk itu.

Pemetaan ini melakukan apa yang Anda inginkan:

nnoremap <leader>o o<Esc>
nnoremap <leader>O O<Esc>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.