2010-10-02 11 views
6

Quiero solicitar una búsqueda y reemplazo patrón de expresión regular que funciona sólo en un determinado rango de línea y columna en un archivo de texto como este:Buscar y reemplazar en una gama de línea y columna

AAABBBFFFFBBBAAABBB 
AAABBBFFFFBBBAAABBB 
GGGBBBFFFFBHHAAABBB 

Para ejemplo quiero reemplazar la acreditación con YYY en el rango de la línea 1 a 2 y de la columna 4 a 6, a continuación, obtener este resultado:

AAAYYYFFFFBBBAAABBB 
AAAYYYFFFFBBBAAABBB 
GGGBBBFFFFBHHAAABBB 

¿hay una manera de hacerlo con Vim?

Respuesta

11
:1,2 s/\%3cBBB/YYY/ 

\%3c significa tercera columna (ver :help /\%c o más globalmente :help pattern)

+0

La columna es la cuarta:: 1,2s/\% 4cBBB/YYY / – aleroot

4

Si éste es siempre el primero que desea reemplazar, simplemente no especifica/g

:1,2s/BBB/YYY/ 

funcionaría bien.

Alternativamente, si necesita especificar exactamente qué columna desea reemplazar, puede usar la sintaxis \%Nv, donde N es la columna virtual (columna como se ve, las pestañas son columnas múltiples, use c en lugar de v para real columnas)

Sustitución del segundo conjunto de de B en las líneas 1 y 2 se podrían hacer con:

:1,2s/\%11vBBB/YYY/ 
+0

'\% v' vs' \% c' ... a él para contarnos. – Benoit