tutorial salir how commands unix vim shell ssh vi

unix - salir - vim editor



Eliminar nueva lĂ­nea en Vim (12)

¿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 poner mi cursor al final de cada línea, presionar una tecla y hacer que la siguiente línea salte a la misma línea en la que está el cursor.

Resultado final:

Evaluator<T>(): _bestPos(){ }

¿Es esto posible en Vim?


Ciertamente. Vim reconoce el carácter / n como una nueva línea, por lo que solo puede buscar y reemplazar. En el modo de comando escribe:

:%s//n/


El problema es que los múltiplos char 0A (/ n) que son invisibles pueden acumularse. Suponga que desea limpiar desde la línea 100 hasta el final:

Escribiendo ESC y: (comandante de terminal)

:110,$s/^/n//

En un script vim:

execute ''110,$s/^/n//''

Explicación: desde 110 hasta el final, busque las líneas que comienzan con una nueva línea (están en blanco) y elimínelas.


En vim:

:set noendofline binary :w


Mientras se encuentra en la línea superior en el modo normal, presione Mayús + j .

También puede anteponer un conteo, por lo que 3J en la línea superior uniría todas esas líneas juntas.


Probablemente depende de tu configuración, pero normalmente lo hago con A<delete>

Donde A se anexa al final de la línea. Probablemente requiere modo nocompatible :)


Si está en la primera línea, al presionar (mayúsculas) J unirá esa línea y la línea 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 juntas.


Si no te importa usar otras herramientas de shell,

tr -d "/n" < file >t && mv -f t file sed -i.bak -e :a -e ''N;s//n//;ba'' file awk ''{printf "%s",$0 }'' file >t && mv -f t file


Simplemente presionaría A (adjuntar al final de la línea, lo pone en el modo de inserción) en la línea donde desea eliminar la nueva línea y luego presione eliminar.


Todo lo siguiente asume que su cursor está en la primera línea:

Usando mapeos normales:

3 Shift + J

Usando los comandos Ex:

:,+2j

Que es una abreviatura de

:.,.+2 join

Que también se puede ingresar por el siguiente atajo:

3 : j

Un comando Ex aún más corto:

:j3


J elimina el espaciado inicial adicional (si existe), uniendo líneas con un solo espacio. (Con algunas excepciones: después de /[.!?]$/ , se pueden insertar dos espacios; antes de /^/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.


<CURSOR>Evaluator<T>(): _bestPos(){ }

cursor en primera linea

AHORA, en MODO NORMAL hacer

shift+v 2j shift+j

o

V2jJ

: V2jJ normal


set backspace=indent,eol,start

en su .vimrc le permitirá usar la tecla de backspace y delete en /n (nueva línea) en el modo de inserción.

set whichwrap+=<,>,h,l,[,]

le permitirá eliminar el LF anterior en modo normal con X (cuando está en la columna 1).