¿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
3J
se combinarán las 3 líneas.fuente
gJ
evitará agregar espacios que Vim puede elegir agregar al usarJ
.V
(Modo de línea visual) y luego presionarJ
ogJ
:join
y: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
V
bloque -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
3J
en la línea superior se unirían todas esas líneas.fuente
Como se mencionó en otras respuestas, (mayúsculas)
J
y buscar + reemplazar\n
pueden 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 noendofline
Por qué no funciona sinbinary
?J
elimina 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,
gJ
simplemente 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!3
en su .vimrc le permitirá utilizar
backspace
ydelete
en\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
A
se agrega al final de la línea. Probablemente requierenocompatible
modo :)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