¿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)?


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>

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.


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 .


1

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

:map z i<CTRL+m>

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"

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.