web-dev-qa-db-fra.com

Insertion d'une ligne vierge dans Vim?

Je trouve souvent que j'ai besoin d'insérer une ligne vierge inférieure ou supérieure à la ligne actuelle lors de la modification de Vim. o et O le fera cela, mais ils passent ensuite en mode insertion, ce qui est gênant. Y a-t-il une commande intégrée à faire cela qui restera en mode normal?

26
Andrew Ferrier

Tim Pope's plug-in unimpaired ainsi que mon propre - Plugin LineJuggler Fournissez [<Space> et ]<Space> mappages à ajouter [count] lignes vides au-dessus de la ligne en cours.

Fondamentalement, il se résume à ceci:

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>
10
Ingo Karkat

J'utilise ces

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

dans mon .vimrc pendant des années.

Appuyez sur Entrée Pour insérer une ligne vide en dessous du courant, Shift + Entrée pour l'insérer ci-dessus.

27
Mr Shunz

Encore une autre façon d'insérer des lignes au-dessus ou ci-dessous:

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

Notez que la solution de Romainl et de M. Shunz déplacera le curseur sur la ligne nouvellement insérée, alors que cela et celui de Ingo Karkat conserveront le curseur au même endroit.

7
taketwo

Non, il n'y a pas de commande intégrée pour cela.

Ces mappages font ce que vous voulez:

nnoremap <leader>o o<Esc>
nnoremap <leader>O O<Esc>
1
romainl