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.