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.