विम: आप कुशलता से पाठ की खोज कैसे करते हैं?


30

जब भी आप vim में टेक्स्ट खोजना चाहते हैं तो आप टाइप करेंगे /और फिर वह स्ट्रिंग जिसे आप खोज रहे हैं।

हालाँकि, जब स्ट्रिंग एक लंबा होता है, और आप इसे कई बार करना चाहते हैं, तो क्या ऐसा करने का कोई तरीका है ताकि आपको /andthisreallylongstringएक से अधिक बार टाइप न करना पड़े ?


12
मैं आपको संक्षेप में एक विम चीट शीट या विम टिप्स का उपयोग करने की सलाह देता हूं - आपको विम से बाहर निकलने के कई अन्य तरीके मिल सकते हैं।
RedGrittyBrick

Protip: लिनक्स के लिए टेक्स्ट एडिटर होते हैं जिन्हें उपयोग करने के लिए सप्ताह के अध्ययन की आवश्यकता नहीं होती है।
ब्लूराजा - डैनी पफ्लुगुफ़ेक्ट

4
@BlueRaja: सुनिश्चित नहीं है कि यह एक संपादक युद्ध के लिए एक अच्छी जगह है। ओएस युद्ध के लिए भी क्योंकि विंडोज या मैक ओएस के लिए अच्छे और उपयोगकर्ता के अनुकूल पाठ संपादक भी हैं। एक संपादक के साथ कुशल होने का अध्ययन करने से आपको मूल विशेषताओं के साथ चिपके रहने की तुलना में संभवतः अधिक कुशल हो जाएगा।
बेनोइट

जवाबों:


61

किसी खोज को पूरा करने के बाद "n" दबाएँ, फिर वह पिछली क्रिया (खोज) को दोहराएगा।


12
इसके अलावा, Nपिछले परिणाम पर जाएंगे।
जिन

15
इसके अलावा, मारने के बाद ऊपर-तीर मारना /अंतिम खोज शब्द को याद करेगा
bastibe

6
q/हाल के सभी खोज शब्द के साथ एक संपादन योग्य विंडो भी दिखाई देगी।
अंकलजीव

7
इसके अलावा, मारना /और दर्ज करना पिछली खोज को दोहराएगा। हिटिंग ?और एंटर पिछली खोज को पीछे की ओर दोहराएगा।
एंडी लेस्टर

3
/Ctrl-Fइसका एक विकल्प q/एक आसान मेमनोनिक (ctrl-f == खोज) हो सकता है। Q की तरह, यह कमांड मोड के लिए भी काम करता है।
idbrii

34

यदि आपके द्वारा खोजा जाने वाला स्ट्रिंग कर्सर के नीचे है, तो आप *उसे आगे की खोज करने के लिए, या #पीछे की ओर खोजने के लिए टाइप कर सकते हैं।


19

कैसे मैं आमतौर पर खोज कुछ इस तरह है;

  1. दबाएँ '/'
  2. खोज शब्द दर्ज करें
  3. एंटर दबाए
  4. खोज के भीतर आगे और पीछे नेविगेट करने के लिए 'एन' और 'एन' का उपयोग करें।

विम आपकी खोजों का एक इतिहास रखता है, इसलिए यदि आपको पिछली खोजों की आवश्यकता है तो आप '/' दबा सकते हैं और खोज इतिहास ब्राउज़ करने के लिए UP और DOWN कुंजियाँ या <Ctrl-P> <Ctrl-N> का उपयोग कर सकते हैं।

आप भी उपयोग कर सकते हैं '?' पीछे की खोज करने के लिए '/' के बजाय।

मुझे भी उपयोग करना पसंद है:

set ignorecase smartcase

अब यह केवल एक केस संवेदनशील खोज होगी यदि आपके पास खोज स्ट्रिंग में अपरकेस अक्षर हैं।


15

दो अतिरिक्त युक्तियां जो आपकी खोज को अधिक कुशल बना सकती हैं set hlsearchऔर हैं set incsearch

  • set hlsearch, ठीक है, आपके खोज परिणामों को उजागर करता है। :nohजब आपको इसकी आवश्यकता न हो, तो उन्हें बंद करने के लिए टाइप करें।

  • set incsearch वृद्धिशील खोज चालू करता है।

    इससे निष्कर्षित :help incsearch

    एक खोज आदेश टाइप करते समय, दिखाएं कि पैटर्न कहां है, क्योंकि यह अब तक टाइप किया गया था, मेल खाता है। मिलान किए गए स्ट्रिंग को हाइलाइट किया गया है। यदि पैटर्न अमान्य है या नहीं मिला है, तो कुछ भी नहीं दिखाया गया है। स्क्रीन को अक्सर अपडेट किया जाएगा, यह केवल फास्ट टर्मिनलों पर उपयोगी है।

    बिना incsearch, आपके परिणाम केवल <CR>आपके खोज कीवर्ड पर दबाने के बाद प्रदर्शित होंगे ।

    उदाहरण:

    तुम खोजना चाहते हो wildignore

    यहां छवि विवरण दर्ज करें

    आप टाइप करते हैं /wildऔर पहला मैच अपने आप हाइलाइट हो जाता है।

    यहां छवि विवरण दर्ज करें

    फिर टाइप करें iऔर यह अगले सही मैच पर जाता है।

    यहां छवि विवरण दर्ज करें


13

एक और टिप जो अभी तक कवर नहीं की गई है: वर्णों को दबाकर qऔर फिर /, आपको अपने पिछले खोज शब्दों की एक सूची देगा। आप उन्हें किसी दस्तावेज़ में किसी अन्य पंक्ति की तरह संपादित कर सकते हैं, और फिर एक नई खोज के लिए उन्हें फिर से उपयोग करने के लिए एंटर दबा सकते हैं।


3
इसी की तलाश में था। यह एक महत्वपूर्ण नोट है, और बहुत ही विषय है।
सिनकोडेनदा

8

/खोज शुरू करने के लिए दबाने के बाद , आप अपने खोज इतिहास को स्क्रॉल करने के लिए ऊपर-तीर कर सकते हैं।

संपूर्ण खोज शब्द टाइप करने से बचने के लिए आप एक नियमित अभिव्यक्ति दर्ज कर सकते हैं: and.*longstring


7

क्या आपके लिए काम नहीं करने के पीछे सिर्फ तर्क / कोई तर्क नहीं है? हमारी सभी प्रणालियों पर, जो भी पिछले खोज की गई थी, उसे दोहराने का कारण बनता है।


6

एक अच्छा पैटर्न है जिसे आप yanked टेक्स्ट के लिए खोज कर सकते हैं । तब आपको अपने आप में इस शब्द को टाइप करने की जरूरत नहीं है, अगर आपने इसे खोज के अलावा अन्य माध्यमों से नेविगेट किया है। सारांश में, यदि आप उस शब्द के पहले वर्ण पर हैं जिसे आप खोजना चाहते हैं:

v
e
y
/
Ctrl-r
0
Enter

(फिर n या N के साथ अगला मैच जारी रखें)

हालाँकि *(या #) इन सभी आदेशों के समान ही बहुत कुछ पूरा करता है। अंतर केवल इतना है कि आप अपने द्वारा निर्दिष्ट शब्द के कितने लचीले हो सकते हैं (ई के बजाय, शब्द के अंत तक, आप जितना चाहें उतना चयन कर सकते हैं, उदाहरण के लिए 9l)


1
  • /string - स्ट्रिंग के लिए आगे खोजें
  • ?string - स्ट्रिंग के लिए वापस खोजें
  • n - स्ट्रिंग के अगले उदाहरण के लिए खोजें
  • N - स्ट्रिंग के पिछले उदाहरण के लिए खोजें

1

जब मैं खोज करना चाहूंगा, तो बहुत समय aVeryLongVariableNameInTheProgram

Vim में आप टेक्स्ट को आसानी से बफर / रजिस्टर में लिख सकते हैं और फिर उसे खोज सकते हैं:

  • शब्द के पहले वर्ण पर कर्सर रखें
  • "Bywटेक्स्ट aVeryLongVariableNameInTheProgramको बफ़र बी में चुनें (अपना पसंदीदा चुनें, मैंने बी का इस्तेमाल किया)
  • /^RB (स्लैश, Ctrl-R, B) बफर बी को सर्च लाइन पर चिपकाने के लिए

निश्चित रूप से आप एक शब्द को रटने के बजाय लाइन आदि के अंत में भी जा सकते हैं - मैं हर समय उपरोक्त अनुक्रम का उपयोग करने के लिए होता हूं।


1

इसके अतिरिक्त, आप खोज प्रॉम्प्ट में किसी भी रजिस्टर की सामग्री को Ctrl+ Rऔर फिर रजिस्टर का नाम जैसे, / Ctrl+ R0 दबाकर चिपका सकते हैं Enter


मुझे लगता है कि तुम एक शब्द है।
dotancohen

0

क्या वह लंबी स्ट्रिंग है जिसे आप एक चर नाम से दर्ज कर रहे हैं? या आपके पाठ में एक लंबी स्ट्रिंग है? फिर *अपने कर्सर के तहत शब्द / स्ट्रिंग की खोज करने के लिए हिट करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.