विम: मैं अपनी खोज से एक संपूर्ण शब्द कैसे बाहर कर सकता हूं?

बहुत ही बुनियादी सवाल, मैं "abc" से शुरू होने वाले किसी भी वाक्यांश से मेल खाने के लिए सीधे किसी भी वाक्यांश से मिलान करने के लिए विम में एक रेगेक्स लिखने की कोशिश कर रहा हूं "defg" के अलावा कुछ भी।

मैंने डी, ई, एफ या जी के अलावा किसी भी एकल चरित्र से मेल खाने के लिए "[^ defg]" का उपयोग किया है।

My first instinct was to try /abc [^\(defg\)] or /abc [^\] but neither one of those works.

0
क्या आपका मतलब है? या उसके बाद? आपके उदाहरणों का पालन करना प्रतीत होता है।
जोड़ा लेखक rampion, स्रोत

4 उत्तर

आगे बढ़े या उसके बाद?

यदि यह 'abc' से शुरू हो रहा है जो 'defg' के बाद (तुरंत) नहीं है, तो आप bmdhacks 'समाधान

यदि यह 'abc' से शुरू हो रहा है जो 'defg' से पहले नहीं है (तुरंत), तो आप नकारात्मक दिखना चाहते हैं:

/\%(defg\)\@

This will match any occurance of 'abc ' as long as it's not part of 'defgabc '. See :help \@ for more details.

यदि आप 'abc' से मिलान करना चाहते हैं, जब तक कि यह 'defg। * Abc' का हिस्सा न हो, तो बस एक । * जोड़ें:

/\%(defg.*\)\@

'Abc' मिलान केवल उन पंक्तियों पर जहां 'defg' नहीं होता है समान है:

/\%(defg.*\)\@

Although, if you're just doing this for a substitution, you can make this easier by combining :v// and :s//

:%v/defg/s/abc //g

This will substitute '' for 'abc ' on all lines that don't contain 'defg'. See :help :v for more.

0
जोड़ा

यहां हम जाते हैं, यह एक बालों वाला है:

/\%(\%(.\{-}\)\@<=XXXXXX\zs\)*

(खोज शब्द के साथ XXXXXX को प्रतिस्थापित करें)। यह उन सभी चीज़ों की खोज करेगा जो नहीं XXXXXX रखते हैं। मुझे कल्पना है कि आपने किया था:

/abc \%(\%(.\{-}\)\@<=defg\zs\)*

यह काम कर सकता है जैसे आप इसे चाहते हैं। आशा है इससे थोडी मदद मिलेगी!

0
जोड़ा

/ एबीसी \ [^ डी] [^ ई] [^ एफ] [^ जी]

यह बड़े शब्दों के लिए बहुत बोझिल है, लेकिन एक आकर्षण की तरह काम करता है।

0
जोड़ा
क्या वह "abc daaa" से मेल नहीं खाएगा?
जोड़ा लेखक Paul Tomblin, स्रोत

यहां खोज स्ट्रिंग है।

/abc \(defg\)\@!

जिस अवधारणा को आप ढूंढ रहे हैं उसे ऋणात्मक रूप से आगे बढ़ाने का दावा कहा जाता है। अधिक जानकारी के लिए इसे vim में आज़माएं:

:help \@!
0
जोड़ा
+1 मुझे यह प्रश्न थोड़ी देर के लिए मिला है। अगर मैं डर नहीं था तो मैं आपकी टिप्पणी को स्पैम के रूप में चिह्नित करूंगा, यह आपके प्रतिनिधि को चोट पहुंचाएगा।
जोड़ा लेखक xdhmoore, स्रोत
रिकॉर्ड के लिए, मैं एक emacs उपयोगकर्ता हूँ :-)
जोड़ा लेखक bmdhacks, स्रोत