Insertar una línea en blanco en vim?


25

A menudo encuentro que necesito insertar una línea en blanco debajo o encima de la línea actual cuando edito en vim. oy Olo hará, pero posteriormente cambian al modo de inserción, lo cual es molesto. ¿Hay algún comando incorporado para hacer esto que permanecerá en modo normal?

Respuestas:


10

Tanto el complemento intacto de Tim Pope como mi propio complemento LineJuggler proporcionan [<Space>y ]<Space>asignaciones para agregar [count]líneas en blanco encima / debajo de la línea actual.

Básicamente, se reduce a esto:

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>

Ahora uso esto, así que lo he marcado como la solución "correcta"; Pero todas las respuestas aquí son geniales.
Andrew Ferrier

Gran consejo, aunque preferí mapear <Space>oy en su <Space>Olugar.
simlev

26

He estado usando estos

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

en mi .vimrcpor años.

Presione Entrar para insertar una línea en blanco debajo de la actual, Mayús + Entrar para insertarla arriba.


Estoy marcando esto correcto ya que es la solución más simple, aunque todas estas respuestas son buenas.
Andrew Ferrier

¡Tan sencillo! ¡Esta debería ser la respuesta aceptada!
Sheharyar

Si no desea que el cursor se mueva cuando presiona Enter, colóquelo al kfinal del primer mapa y jal final del segundo mapa.
zondo

1
Tenga en cuenta que la asignación Shift-Enter solo funciona con la versión GUI de vim, no con la versión del terminal. stackoverflow.com/questions/16359878/vim-how-to-map-shift-enter
ishmael

7

Otra forma más de insertar líneas arriba o abajo:

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

Tenga en cuenta que la solución de romainl y Mr Shunz moverá el cursor a la línea recién insertada, mientras que esta y también la de Ingo Karkat mantendrán el cursor en el mismo lugar.


1

No, no hay un comando incorporado para eso.

Estas asignaciones hacen lo que quieres:

nnoremap <leader>o o<Esc>
nnoremap <leader>O O<Esc>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.