
Me gusta el J
comando para unir muchas líneas, pero no me gusta tener que contar cuántas líneas quiero unir. Preferiría presentar una moción. Esto se puede falsificar con V{motion}J
; ¿Hay alguna manera que no implique ingresar al modo visual (por lo tanto, golpear el *
registro)?
Respuesta1
Creo que no existe un operador de unión predeterminado. Pero puedes usar este código, desdeun viejo hilo de vim sobre el mismo tema:
nnoremap J :set operatorfunc=Joinoperator<CR>g@
nnoremap gJ :set operatorfunc=GJoinoperator<CR>g@
onoremap J j
func! Joinoperator(submode)
'[,']join
endfunc
func! GJoinoperator(submode)
'[,']join!
endfunc
Tenga en cuenta que no será posible utilizar este fragmento J
para unir un par de líneas; será necesario utilizarlo Jj
(o JJ
debido a omap J j
).
Respuesta2
Puedes hacer algo como:
:.,/pattern/join
Básicamente, le estás diciendo a Vim que una un rango de líneas, .
siendo la línea actual en la que se encuentra el cursor y la última línea siendo la primera coincidencia de pattern
.