वहाँ एक पैटर्न की तरह ^ विम में है?


20

विम सामान्य मोड में, 0कमांड आपको लाइन पर पहले कॉलम पर ^ले जाता है और आपको लाइन की तार्किक शुरुआत में ले जाता है (उदाहरण के लिए पहला गैर-व्हाट्सएप चरित्र)। रेगेक्स की दुनिया में, ^लाइन पर पहले चरित्र से मेल खाता है, व्हॉट्सएप या नहीं। क्या विम के पास एक पैटर्न है जो उसके '^' कमांड की तरह व्यवहार करता है - एक पंक्ति की तार्किक शुरुआत से मेल खाता है?


मुझे लगता है कि रेगेक्स में ^ आम तौर पर लाइन की शुरुआत से मेल खाता है, न कि पहला चरित्र। ^। शुरुआत और फिर पहले चरित्र से मेल खाएगा, शुरुआत से नहीं और फिर दूसरे चरित्र से।
bdsl

जवाबों:


17

किसी लाइन पर पहले गैर-व्हाट्सएप चरित्र से मेल खाने का कोई शॉर्टकट नहीं है, आपको पैटर्न खुद बनाना होगा, जैसे:

^\s*restofpattern

यदि आप अपने मैच में व्हॉट्सएप को शामिल नहीं करना चाहते हैं, तो आपको एक शून्य-चौड़ाई के दावे का उपयोग करना होगा, जैसे:

\(^\s*\)\@<=restofpattern

बिल्कुल सुंदर नहीं है, लेकिन कम से कम यह काम हो जाता है।


6

पहले नॉन- व्हाट्सएप कैरेक्टर से मेल खाने के लिए , आप \Sजैसा सामान्य रूप से करते हैं , वैसे ही इस्तेमाल करेंगे।


यदि आप ^vim में रेगेक्स का उपयोग करते हैं , तो यह लाइन की वास्तविक शुरुआत से मेल खाएगा, भले ही इसमें व्हॉट्सएप हो।

उदाहरण के लिए, यह रेखा एक स्थान से शुरू होती है:

 <- there's a space there you can't see :)

यह vim कमांड अग्रणी स्थान को हटा देगा:

:%s/^ //

निम्नलिखित में परिणाम:

<- there's a space there you can't see :)

इसलिए, रीगेक्स आपकी अपेक्षा के अनुरूप व्यवहार करेगा, भले ही कमांड न हो।


मुझे लगता है कि आप नीचे की व्याख्या करने जा रहे हैं। यह उत्तर, जहाँ तक मुझे पता है, सही है।
माइकल हैम्पटन

1
मैं नीचे नहीं गया, लेकिन स्पष्टीकरण के माध्यम से: मैं सोच रहा था कि क्या विम के पास लाइन के पहले गैर-व्हाट्सएप चरित्र से मेल खाने वाला एक ऑपरेटर है। ^ऑपरेटर (सभी समझदार regex कार्यान्वयन की तरह), पहले वर्ण से मेल खाएगी तो भी यह खाली स्थान के है।
माइकल

खैर, आप इसे सामान्य रूप से कैसे करने की उम्मीद कर रहे थे? आमतौर पर रेगेक्स में आप \Sपहले गैर-व्हाट्सएप चरित्र से मेल खाने के लिए कुछ का उपयोग करते थे ।
माइकल हैम्पटन

2
\Sकिसी भी गैर-व्हाट्सएप चरित्र से मेल खाएगा । दूसरे शब्दों में कहें करने के लिए, मैं सोच रहा हूँ अगर विम इस के लिए एक शून्य चौड़ाई आशुलिपि है: ^\W*\S
माइकल

1
कोई भी इंजन जिसे मैं जानता हूं कि वह कार्यक्षमता प्रदान करता है, लेकिन फिर से - जब आप एक सामान्य-उद्देश्य वाले इंजन की देखभाल करेंगे? विम एक सामान्य उद्देश्य रेगेक्स इंजन नहीं है। यह एक संपादक है जिसमें एक रेगेक्स इंजन है इसलिए मैं सोच रहा था कि क्या इसमें किसी विशेष चीज के लिए कोई विशेष निर्माण है जो केवल एक संपादक के अंदर ही मायने रखता है।
माइकल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.