salir modo linea insertar inicio guardar editar documento comando cambios vim

modo - ¿Cómo repito una edición en múltiples líneas en Vim?



vim guardar (8)

Además de las macros, como ya se respondió, para el caso específico de insertar una coma en un rango de líneas (por ejemplo, de la línea 10 a la 20), puede hacer algo como:

:10,20s//(.*/)/,/1

Es decir, puede crear una coincidencia de grupo numerada con / (y /) y usar / 1 en la cadena de reemplazo para decir "reemplazar con el contenido de la coincidencia".

Soy consciente de que en Vim a menudo puedo repetir un comando simplemente agregando un número delante de él. Por ejemplo, uno puede eliminar 5 líneas de la siguiente manera:

5dd

También a menudo es posible especificar un rango de líneas para aplicar un comando, por ejemplo

:10,20s:hello:goodbye:gc

¿Cómo puedo realizar una ''edición vertical''? Me gustaría, por ejemplo, insertar un símbolo particular, digamos una coma, al principio (omitiendo el espacio en blanco, es decir, lo que obtendrías si escribes una coma después de Shift-I en el modo de comando) de cada línea en un dado distancia. ¿Cómo se puede lograr esto (sin recurrir a down-period-down-period-down-period)?


Creo que la forma más fácil de hacerlo es

1) graba una macro para una línea, llámala ''a''; en este caso uno tipos

qa I, ESC jq

2) seleccione el bloque de líneas al que desea aplicar la macro

3) use la función ''norma'' para ejecutar la macro ''a'' sobre este bloque de líneas, es decir,

:''<,''>norm@a


Creo que lo más fácil es grabar una macro, y luego repetir la macro tantas veces como quieras. Por ejemplo, para agregar una coma al inicio de cada línea, escriba:

q a I , ESC j q

para repetir eso 5 veces, ingresas

5 @ a


Para eso es para lo que el comando: norma (al) es:

:10,20 normal I,


Si ya está usando el ''.'' para repetir tu último comando mucho, entonces encontré que this era la solución más conveniente hasta ahora. Le permite repetir su último comando en cada línea de un bloque visual usando

" allow the . to execute once for each line of a visual selection vnoremap . :normal .<CR>


Yo uso el modo visual de bloque . Esto le permite realizar inserciones / ediciones en múltiples líneas (también conocidas como "ediciones verticales").


:10,20s/^/,/

O usa una macro, graba con:

qai , ESC jhq

usar con:

@ a

Explicación: qa comienza a grabar una macro para registrar a , q finaliza la grabación. Hay registros de la a la z disponibles para esto.


Ctrl - v ingresa al modo visual en bloque. Luego puede mover ( h j k l -wise, como es normal), y si desea insertar algo en múltiples líneas, use Shift - i .

Entonces para el texto:

abc123abc def456def ghi789ghi

si presiona Ctrl - v con el cursor sobre el 1, presione j dos veces para bajar dos columnas, luego Shift - i , ESC , su texto se vería así:

abc,123abc def,456def ghi,789ghi

(la inserción de varias líneas tiene un pequeño retraso, y no se renderizará hasta DESPUÉS de presionar ESC ).