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?

Andrew Ferrier
la source

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>
Ingo Karkat
la source
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.

M. Shunz
la source
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.

prendre deux
la source
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>
romainl
la source