¿Cómo puedo insertar texto al final de un grupo de líneas?

16

Digamos que tenía un bloque de texto ...

Lorem ipsum
Lorem ipsum dolor
Lorem ipsum dolor sit
Lorem ipsum dolor sit amet

... y quería insertar un .al final de cada línea. ¿Cuál sería el mejor enfoque para lograr esto?

vim.ryan
fuente

Respuestas:

12

Hago lo siguiente para agregar texto a varias líneas:

  • <c-V> - Ingrese al modo de bloqueo visual.
  • Use j/ kpara seleccionar las líneas.
  • $ - Mueve el cursor al último personaje.
  • A - Ingrese al modo de inserción después del último carácter.
  • Insertar el texto deseado.
  • <Esc> - Salga del modo de inserción y termine de agregar el bloque.

En comparación con la escritura :normdespués de la selección, hay incluso menos pulsaciones de teclas, pero la verdadera razón por la que uso esto es porque es más instintivo para mí trabajar en el modo Bloque visual para este tipo de cambios.

Vitor
fuente
Muy útil combinado con pegar una columna de texto .
Paul Rougieux
8

En la primera línea simplemente escriba: 4:norm A.

4y :crea un rango para ti y luego norm A.agrega el punto a cada línea

Otra solución para párrafos más largos podría ser: Vip<C-v>$A.<Esc>

El primer paso es seleccionar el párrafo con el que Vipluego cambia al modo de bloque visual y mover el cursor al final de cada línea con el que $luego agrega el .a cada línea A.y llega al modo normal con <Esc>para ver el cambio aplicado a cada línea .

rbernabe
fuente
¿Qué es este :Acomando? No lo encontré a través de:h :A
Peter Rincker
culpa mía. De hecho no probó la respuesta. Lo estoy actualizando. Debería usar el comando normal al igual que la respuesta de @Kritixi Lhitos
rbernabe
Dos personajes menos de 4:norm A.lo que serían4:s/$/.
Philippos
3

Primero puede seleccionarlos visualmente usando Vy luego usar las teclas de movimiento para seleccionar todo el texto (o si el texto fuera estrictamente un párrafo que podría hacer [comenzando en la primera línea] V}). Y luego escribe :. Esto debería mostrar algo como :'<,'>en la línea de comandos.

:'<'>normal A.

Esto se ejecuta normal A.en las líneas seleccionadas. normal A.se ejecuta A.como pulsaciones de teclas en modo normal. Esto Acoloca .a al final de cada una de las líneas seleccionadas.

Kritixi Lithos
fuente
3

Si desea agregar puntos al final de todas las líneas:

:%norm A.

o puede usar buscar y reemplazar:

:%s/$/./

% es el archivo completo, $ es el final de la línea

seguir
fuente
Dado que @ vim.ryan solicitó un bloque de texto en lugar del archivo completo, :1,4s/$/./ que sustituye el último carácter con un punto en las líneas uno a cuatro inclusive.
rjt
1

Para hacerlo un poco más general, puede grabar una macro en una sola línea y luego reproducirla en cada línea en su rango visualmente seleccionado.

Grabe una macro en un registro (el registro q en este ejemplo):

qqA.<Esc>q

Luego puede seleccionar visualmente las líneas en las que desea operar:

Vip

Y luego reproduzca su macro en cada línea (el rango se rellenará automáticamente):

:'<,'>norm @q
Zach Ingbretsen
fuente