salir por editar cómo consola con borrar archivo regex vim replace match

regex - por - salir del editor vi



¿Cómo puedo agregar una cadena al final de cada línea en Vim? (10)

... y anteponer (agregar el comienzo de) cada línea con *,

%s/^/*/g

Quiero agregar * al final de cada línea en Vim.

Probé el código sin éxito

:%s//n/*/n/g


Creo que usar el modo de bloqueo visual es un método mejor y más versátil para tratar este tipo de cosas. Aquí hay un ejemplo:

Esta es la primera línea.
Este es el segundo.
El tercero.

Para insertar "Hola mundo". (espacio + portapapeles) al final de cada una de estas líneas:

  • En un carácter en la primera línea, presione Ctrl-V (o Ctrl-Q si Ctrl-V está pegado).
  • Presiona jj para extender el bloque visual en tres líneas.
  • Presione $ para extender el bloque visual hasta el final de cada línea. Presiona A, luego espacio y luego escribe Hello world. + luego Esc.

El resultado es:

Esta es la primera línea. Hola Mundo.
Este es el segundo. Hola Mundo.
El tercero. Hola Mundo.

(ejemplo de http://vim.wikia.com/wiki/Inserting_text_in_multiple_lines )


Incluso más corto que el comando de búsqueda:

:%norm A*

Esto es lo que significa:

% = for every line norm = type the following commands A* = append ''*'' to the end of current line


Realmente no necesitas la g al final. Así se convierte en:

:%s/$/*

O si solo quiere el * al final de, diga las líneas 14-18:

:14,18s/$/*

o

:14,18norm A*


Si desea agregar Hello world al final de cada línea:

:%s/$/HelloWorld/

Si desea hacer esto para un número específico de líneas, por ejemplo, del 20 al 30 use:

:20,30s/$/HelloWorld/

Si desea hacer esto al inicio de cada línea, use:

:20,30s/^/HelloWorld/


También:

:g/$/norm A*

También:

gg<Ctrl-v>G$A*<Esc>


Una opción es:

:g/$/s//*

Esto encontrará cada ancla de extremo de línea y la sustituirá por * . Digo "sustituto" pero, en realidad, es más un apéndice ya que el ancla es una cosa especial en lugar de un personaje regular. Para más información, vea Poder de g - Ejemplos .


:%s/$//*/g

Deberia trabajar. Entonces, debería :%s/$/*/g como señala MrWiggles correctamente.


:%s//n/*/r/g

La primera es correcta en cualquier otro lugar, pero Vim tiene que tener un manejo de nueva línea diferente por alguna razón.


%s//s*$//*/g

Esto hará el truco y asegurará que los espacios iniciales sean ignorados.