Insérer une ligne vierge dans vim?


25

Je trouve assez souvent que j'ai besoin d'insérer une ligne vierge en dessous ou au-dessus de la ligne actuelle lors de l'édition dans vim. oet le Ofera, mais ils passent ensuite en mode d'insertion, ce qui est ennuyeux. Existe-t-il une commande intégrée pour ce faire qui restera en mode normal?

Réponses:


10

Les deux Tim Pope plug - in intact , ainsi que mon propre LineJuggler plugin fournissent [<Space>et les ]<Space>correspondances pour ajouter des [count]lignes vides au- dessus / en dessous de la ligne actuelle.

Fondamentalement, cela 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>

J'utilise maintenant ceci, donc je l'ai marqué comme la solution "correcte"; mais toutes les réponses ici sont excellentes.
— Andrew Ferrier,

Excellent conseil, même si j'ai préféré cartographier <Space>oet à la <Space>Oplace.
— simlev

26

Je les utilise

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

dans mon .vimrcpendant des années.

Appuyez sur Entrée pour insérer une ligne vierge sous le courant, Maj + Entrée pour l'insérer au-dessus.


Je note cela comme étant la solution la plus simple, bien que toutes ces réponses soient bonnes.
— Andrew Ferrier

Si simple! Cela devrait être la réponse acceptée!
— Sheharyar

Si vous ne voulez pas que le curseur bouge lorsque vous appuyez sur Entrée, placez-le kà la fin de la première carte et jà la fin de la deuxième carte.
— zondo

1
Notez que le mappage Shift-Enter ne fonctionne qu'avec la version GUI de vim, pas la version du terminal. stackoverflow.com/questions/16359878/vim-how-to-map-shift-enter
— ishmael

7

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

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

Notez que la solution de romainl et M. Shunz déplacera le curseur sur la ligne nouvellement insérée, alors que celle-ci et celle d'Ingo Karkat garderont le curseur au même endroit.


1

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>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.