Inserire una riga vuota in vim?


25

Trovo abbastanza spesso che ho bisogno di inserire una riga vuota sotto o sopra la riga corrente durante la modifica in VIM. oe Olo farà, ma successivamente passeranno alla modalità di inserimento, il che è fastidioso. Esiste un comando integrato per farlo che rimarrà in modalità normale?

Risposte:


10

Sia il plug-in senza compromessi di Tim Pope che il mio plug-in LineJuggler forniscono [<Space>e ]<Space>mappature per aggiungere [count]righe vuote sopra / sotto la riga corrente.

Fondamentalmente, si riduce a questo:

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>

Ora lo uso, quindi l'ho contrassegnato come la soluzione "corretta"; ma tutte le risposte qui sono fantastiche.
Andrew Ferrier,

Ottimo consiglio, anche se ho preferito mappare <Space>oe <Space>Oinvece.
simlev

26

Ho usato questi

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

nel mio .vimrcper anni.

Premi Invio per inserire una riga vuota sotto corrente, Maiusc + Invio per inserirla sopra.


Lo sto contrassegnando come corretto in quanto è la soluzione più semplice, sebbene tutte queste risposte siano buone.
Andrew Ferrier,

Cosi 'semplice! Questa dovrebbe essere la risposta accettata!
Sheharyar,

Se non vuoi che il cursore si sposti quando premi Invio, posiziona kalla fine della prima mappa e jalla fine della seconda mappa.
zondo,

1
Si noti che la mappatura di Shift-Enter funziona solo con la versione GUI di vim, non con la versione del terminale. stackoverflow.com/questions/16359878/vim-how-to-map-shift-enter
Ishmael

7

Ancora un altro modo per inserire righe sopra o sotto:

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

Si noti che la soluzione di Romainl e Mr Shunz sposta il cursore sulla riga appena inserita, mentre questa e anche quella di Ingo Karkat manterranno il cursore nello stesso punto.


1

No, non esiste un comando integrato per questo.

Queste mappature fanno quello che vuoi:

nnoremap <leader>o o<Esc>
nnoremap <leader>O O<Esc>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.