2011-01-19 15 views
50

Se faccio qualcosa di simile:di ricerca multipla e sostituire in una linea

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

e la prima ricerca e sostituzione non trova corrispondenze, la seconda ricerca e sostituzione non verranno eseguite. C'è un modo per dire a Vim di andare avanti anche quando un comando "fallisce"?

risposta

78

Prova

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

e leggere

:help :s_flags 

soprattutto la voce sotto [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 come prefisso ogni 's' con un' '%. Quando ho provato questo, ho accidentalmente messo solo un '%' di fronte alla prima sostituzione. Il comando verrà comunque eseguito senza errori ma non eseguirà le sostituzioni che ci si aspetta che esegua. – josch

+0

Fai questo con tutti i buffer facendo il prefisso con ': bufdo'. vale a dire: bufdo% s/a/b/g | ... ' – blockloop

Problemi correlati