una tutorial palabra editar cómo copiar con comandos archivo vim batch-file substitution

tutorial - VIM, ejecuta un comando en varios archivos



vi linux (4)

Aquí hay un ejemplo

:bufdo %s/oldStuff/newStuff/ge | update

solo cambia tu expresión regular para satisfacer tus necesidades

Tengo un montón de archivos sass y mi diseñador usó la sintaxis incorrecta. Quería :margin-top 1px pero hizo margin-top: 1px

Así que fácilmente escribí un sub comando:

:rubydo sub! /([/w-]+):/,'':/1''

Así que eso funciona y arregla todos los dos puntos y los mueve en el lugar que quiero. Tengo unos 50 archivos sass en un directorio de stylesheets . ¿Cómo puedo ejecutar este comando en todos mis archivos de una sola vez? No estoy muy seguro de cómo hacer esto en vim . Tal vez algo que ver con grep ? No pude decirte


Creo que la mejor herramienta para este caso es sed, el editor de secuencias.

sed -i.old ''s/:/([-a-z]*/)//1:/'' *.css

Esto editará todos sus archivos .css dejando los originales con las extensiones .old .

El conjunto de expresiones regulares utilizadas por sed es un poco diferente, y dependiendo de su versión más o menos limitada. La expresión que utilicé aparentemente funciona bien para su caso, con la herramienta BSD.


Un par de pasos.

:vimgrep /^[^:]/w+/ %:p:h/* " find all of the lines that don''t start with a colon

Esto pondrá todas las coincidencias en su lista de soluciones rápidas.

Luego una macro para hacer lo que quieras hacer.

qa I:<esc> f:x :w|cn<enter> q

Luego prueba esa macro unas cuantas veces (con @a ). Luego otra macro para ejecutar esa macro una y otra vez ...

qbq " this clears out b before starting, very important! qb@a@bq @b " watch in amazement. :)