2011-01-19 12 views
50

Si hago algo como:de búsqueda múltiple y reemplazar en una línea

:% s/aaa/bbb/| % s/111/222/

y la primera búsqueda y reemplazo no encuentra ninguna coincidencia, la segunda búsqueda y reemplazo no se ejecutará. ¿Hay alguna manera de decirle a vim que continúe incluso cuando un comando "falló"?

Respuesta

78

Trate

:%s/aaa/bbb/e | %s/111/222/e 

y leer

:help :s_flags 

todo el texto correspondiente a [e]:

When the search pattern fails, do not issue an error message and, in 
particular, continue in maps as if no error occurred. This is most 
useful to prevent the "No match" error from breaking a mapping. Vim 
does not suppress the following error messages, however: 
Regular expressions can't be delimited by letters 
\ should be followed by /, ? or & 
No previous substitute regular expression 
Trailing characters 
Interrupted 
+2

Nota para cada prefijo 's' con un' '%. Cuando probé esto, accidentalmente puse un '%' delante del primer reemplazo. El comando seguirá ejecutándose sin error, pero no hará los reemplazos que espera que se lleven a cabo. – josch

+0

Haz esto con todos los buffers añadiendo ': bufdo'. es decir '' bufdo% s/a/b/g | ... ' – blockloop

Cuestiones relacionadas