La gJ
combinación hace esto; de :help gJ
:
Unir [recuento] líneas, con un mínimo de dos líneas. No inserte ni elimine espacios.
Puede volver a vincularlo J
, si desea guardar una pulsación de tecla:
:nnoremap J gJ
Tenga en cuenta que esto no elimina ningún espacio, por lo que si la línea actual termina con un espacio o la siguiente línea comienza con uno o más espacios, se dejarán como están .
Entonces:
Hello
world
Se convierte en:
Hello world
Nosotros podríamos usar Jx
en este caso, entonces será Helloworld
, pero que no funciona en todos los casos; de la ayuda:
Une las líneas resaltadas, con un mínimo de dos líneas. Elimine la sangría e inserte hasta dos espacios
[...]
Estos comandos, excepto "gJ", insertan un espacio en lugar del a menos que haya un espacio en blanco al final o la siguiente línea comienza con un ')'.
Entonces, en algunos casos, se inserta más de un espacio o ningún espacio. Hasta donde puedo ver, no hay una manera fácil de cambiar este comportamiento; Creé una función para modificar gJ
para unir siempre sin espacios:
" Like gJ, but always remove spaces
fun! JoinSpaceless()
execute 'normal gJ'
" Character under cursor is whitespace?
if matchstr(getline('.'), '\%' . col('.') . 'c.') =~ '\s'
" When remove it!
execute 'normal dw'
endif
endfun
" Map it to a key
nnoremap <Leader>J :call JoinSpaceless()<CR>
Ver también: :help J
,:help 'joinspaces'
Otro truco que puedes probar es usar reemplazar. A veces esto puede ser útil.
Escenario: Eliminar el último personaje y unirse con la siguiente línea:
Por ejemplo,
se convierte en:
fuente
Crea una macro y reutilízala:
qaJxq
Ahora reproduzca la macro,
a
utilizando @adonde quiera unir dos líneas sin espacio.@@repetirá la macro anterior. Por lo tanto, puede mantener presionado @para unir varias líneas.
fuente
@a
cuando puedes escribirJx
? ¡El mismo número de pulsaciones de teclas y SHIFT!3@a
para unir 3 líneas, mientras que hacerlo3Jx
uniría 3 líneas con espacios y luego eliminaría el espacio entre las líneas segunda y tercera, dejando espacios entre las otras líneas.Para unirse siempre con un solo espacio:
Para unirse sin espacio en absoluto (elimina el espacio final + inicial):
fuente
Seleccione las líneas que desea fusionar, ingrese un comando Ex escribiendo dos puntos
:
en modo normal. Luego escriba este comando:s/$\n\s*//gc
El comando completo debería tener el mismo aspecto:
:'<,'>s/$\n\s*//gc
Explicación:
'<,'>
significa que modificamos solo las líneas seleccionadas en modo visual./$\n\s*
Es un patrón de expresiones regulares . Estamos buscando una coincidencia que termine$
con un nuevo carácter de línea\n
y que tenga un número no determinado de espacios en blanco a*
partir de entonces.s/pattern//gc
es un comando sustituto para encontrar cada patrón y reemplazarlo con un carácter vacío en la confirmación.fuente