2011-01-19 20 views
50

में की जगह मैं की तरह कुछ करते हैं:एकाधिक खोज और एक पंक्ति

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

और पहली खोज और प्रतिस्थापन को कोई मिलान नहीं मिला, दूसरी खोज और प्रतिस्थापन निष्पादित नहीं किया जाएगा। क्या आदेश "विफल" होने पर भी आगे बढ़ने के लिए विम को बताने का कोई तरीका है?

उत्तर

78

प्रयास करें

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

और पढ़ने

:help :s_flags 

विशेष रूप से के तहत [ई] प्रविष्टि:

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

नोट एक '%' 'के साथ हर s' उपसर्ग के लिए। जब मैंने कोशिश की तो मैंने गलती से केवल पहले प्रतिस्थापन के सामने '%' लगाया। आदेश अभी भी त्रुटि के बिना चलाएगा लेकिन यह उन प्रतिस्थापनों को नहीं करेगा जिन्हें आप उम्मीद करते हैं। – josch

+0

'bufdo' के साथ उपसर्ग करके सभी बफर के साथ ऐसा करें। यानी ': bufdo% s/a/b/g | ... ' – blockloop

संबंधित मुद्दे