¿Hay un comando para dividir líneas en Vim?

15

En Vim, la Jclave une dos líneas. ¿Existe una combinación de teclas similar incorporada para dividir líneas con una nueva línea (en la posición del cursor o similar)?

Alternativamente, ¿cuál sería la forma más sólida de definir una combinación de teclas para hacer eso (en modo normal, no en modo de inserción)?

Andrew Ferrier
fuente

Respuestas:

16

No, no hay un comando incorporado para eso.

Cuando quiero dividirme en un <Space>, lo hago r<CR>.

--- EDITAR ---

El comentario de @ keith-nicholas me recordó esta pregunta. FWIW Se me ocurrió un método con suerte "universal" mientras tanto:

function! BreakHere()
    s/^\(\s*\)\(.\{-}\)\(\s*\)\(\%#\)\(\s*\)\(.*\)/\1\2\r\1\4\6
    call histdel("/", -1)
endfunction

nnoremap <key> :<C-u>call BreakHere()<CR>
romainl
fuente
44
¡Usar r<CR>es simplemente inteligente! ¡Gracias!
Marcelo
1
¡eso es genial! súper molesto entrar en insertar para insertar líneas
Keith Nicholas
Encontré que s<CR>mantiene la sangría, mientras r<CR>que no.
toxefa
5

a Enter Escdividir a la derecha del cursor o i Enter Escdividir a la izquierda.

Scott
fuente
1
Eso es. Simplemente inserte una nueva línea. Alternativamente: use r + <return> para reemplazar el carácter debajo del cursor con una nueva línea. Sería bueno tener un comando de una sola letra para él, pero que yo sepa, no hay ninguno.
Tonny
2

La forma más fácil que he encontrado para dividir líneas en Vim es el comando de modo normal gq(escriba ambas letras en rápida sucesión en modo normal o visual):

  • En modo visual, dividirá lo que esté seleccionado.
  • En modo normal, sigues gqcon un movimiento.

Por ejemplo, gqldividirá una línea al ancho establecido actualmente. Para establecer que el ancho de las líneas divididas sea diferente de su configuración actual, puede usar

:set textwidth=<n>

Donde n = número de caracteres que desea en una línea, por ejemplo, 10, y vuelva a su ancho normal cuando haya terminado.

Obtuve esta información de un video de Youtube de Kholidfu que muestra cómo unir y dividir líneas en modo normal usando un movimiento: Tutorial de Vim - Unir y dividir líneas .

vdicarlo
fuente
1

Puedes definir el tuyo usando el mapa. Para definir z como el comando, por ejemplo:

:map z i<CTRL+m>
sospechoso
fuente
0

Puedes grabar una macro:

en modo normal, escriba "q +" para iniciar el registro. presione "i", la macro que desea grabar. luego presione "q" nuevamente para detener la grabación.

para usar la macro, vaya al modo normal y escriba "@ + letra".

en mi caso usé la "b" para usar esta macro: para grabar el tipo en modo normal "qbiq" para usar el tipo en modo normal "@b"

luizhj
fuente