¿Hay alguna forma de eliminar la nueva línea al final de una línea en Vim, para que la siguiente línea se agregue a la línea actual?
Por ejemplo:
Evaluator<T>():
_bestPos(){
}
Me gustaría poner todo esto en una línea sin copiar líneas y pegarlas en la anterior. Parece que debería poder colocar mi cursor al final de cada línea, presionar una tecla y hacer que la siguiente línea salte sobre la misma en la que está el cursor.
Resultado final:
Evaluator<T>(): _bestPos(){ }
¿Es esto posible en Vim?

Respuestas:
Si está en la primera línea, al presionar (mayúscula) Jse unirá esa línea y la siguiente, eliminando la nueva línea. También puede combinar esto con un conteo, por lo que al presionar
3Jse combinarán las 3 líneas.fuente
gJevitará agregar espacios que Vim puede elegir agregar al usarJ.V(Modo de línea visual) y luego presionarJogJ:joiny:join!eso unirá líneas manteniendo la posición del cursor y no mantenga ningún espacio en el punto de unión. también puedes mapearlo como:nnoremap <Leader>j :joing<cr>ynnoremap <Leader>gj :join!<cr>.Ciertamente. Vim reconoce el carácter \ n como una nueva línea, por lo que puede buscar y reemplazar. En modo comando escriba:
fuente
Vbloque -isual y reemplazarlo.Mientras estás en la línea superior en modo normal, presiona Shift+ j.
También puede anteponer un recuento, por lo que
3Jen la línea superior se unirían todas esas líneas.fuente
Como se mencionó en otras respuestas, (mayúsculas)
Jy buscar + reemplazar\npueden usarse generalmente para quitar caracteres de nueva línea y concatenar líneas.Pero para deshacerse del carácter de nueva línea final en la última línea , debe hacer esto en Vim:
fuente
:set noendoflinePor qué no funciona sinbinary?Jelimina el espacio inicial adicional (si lo hay), uniendo líneas con un solo espacio. (Con algunas excepciones: después/[.!?]$/, se pueden insertar dos espacios; antes/^\s*)/, no se insertan espacios).Si no desea ese comportamiento,
gJsimplemente elimina la nueva línea y no hace nada inteligente con espacios en absoluto.fuente
Todo lo siguiente supone que su cursor está en la primera línea:
Usando mapeos normales:
3Shift+J
Usando comandos Ex:
Cuál es una abreviatura de
Que también se puede ingresar mediante el siguiente acceso directo:
3:j
Un comando Ex aún más corto:
fuente
:j!3en su .vimrc le permitirá utilizar
backspaceydeleteen\n(salto de línea) en el modo de inserción.le permitirá eliminar el LF anterior en modo normal con
X(cuando está en la columna 1).fuente
Probablemente depende de su configuración, pero generalmente hago esto con
A<delete>Donde
Ase agrega al final de la línea. Probablemente requierenocompatiblemodo :)fuente
cursor en primera línea
AHORA, en MODO NORMAL
o
: normal V2jJ
fuente
Simplemente presionaría A (agregar al final de la línea, lo pone en modo de inserción) en la línea donde desea eliminar la nueva línea y luego presionar eliminar.
fuente
:help 'backspace'si no te importa usar otras herramientas de shell,
fuente
ggVGJ.El problema es que se pueden acumular múltiples char 0A (\ n) que son invisibles. Suponga que desea limpiar desde la línea 100 hasta el final:
Escribiendo ESC y: (comandante de terminal)
En un script vim:
Explicación: desde 110 hasta el final, busque líneas que comienzan con una nueva línea (están en blanco) y elimínelas
fuente