विम में चयनित पाठ की खोज कैसे करें?


61

मुझे पता है कि मैं /कुछ खोजने के लिए regex द्वारा पीछा कर सकता हूं । और मैं ?पीछे की ओर खोज करने के लिए उपयोग कर सकता हूं । और मैं खोज का उपयोग कर सकता हूं nऔर Nखोज को आगे और पीछे दोहरा सकता हूं ।

दो अच्छे शॉर्टकट भी हैं: *या #कर्सर (फॉरवर्ड / बैकवर्ड) के तहत शब्द की खोज करेंगे। यह बहुत उपयोगी है! ( g*और भी हैं g#)

लेकिन ... एक बार जब मैंने दृश्य मोड ( v) का उपयोग करके पाठ का चयन किया है , तो मैं विम को उस पाठ की खोज करने के लिए कैसे कह सकता हूं? एक त्वरित देखो :helpनहीं किया ... हुह ... मेरी मदद करो।



युक्तियों के लिए धन्यवाद *और #! अच्छा होगा यदि आपका प्रश्न यह भी g*g#
बताएगा

जवाबों:


22

निम्नलिखित अनुक्रम वही करेगा जो आप चाहते हैं, पाठ का एक पहले से चयनित ब्लॉक दिया गया है:

  • y(चयनित पाठ "को डिफ़ॉल्ट रूप से रजिस्टर में दें)
  • / (खोज मोड दर्ज करें)
  • ( \ V) (वैकल्पिक, "बहुत जादू नहीं" मोड दर्ज करें)
  • Ctrl+ r "( "रजिस्टर से टेक्स्ट डालें )
  • Enter (संलग्न!)

(*) "बहुत नो मैजिक" मोड निम्नलिखित पाठ को एक रेगेक्स के बजाय सादे पाठ के रूप में व्याख्या करता है। हालांकि ध्यान दें कि \और /अभी भी विशेष हैं और अन्य तरीकों से नियंत्रित किया जाएगा। यदि पाठ में कोई विशेष वर्ण नहीं है, तो आप इस चरण को छोड़ सकते हैं।

स्रोत: विम टिप्स विकी


1
धन्यवाद! यह vim.wikia पृष्ठ पर "हाउ-टू" की तुलना में बहुत अधिक समझने योग्य है
विंकलेर्र

64

आप सबसे पहले हाइलाइट किए गए टेक्स्ट को यैंक कर सकते हैं। फिर

  • /

  • Ctrlr

  • "

जो आप के बाद yanked है पेस्ट होगा /


7
अच्छा विचार ... सिवाय इसके कि पेस्ट किए गए पाठ की व्याख्या रेगेक्स के रूप में की जाएगी, जो वांछित नहीं है। :-(
डेनिलसन सा माया

4
यदि यह आपके लिए लगभग पर्याप्त है, तो आप /\V<C-r>"इसके बजाय कर सकते हैं । \Vअपनी खोज क्वेरी से जुड़कर , आप "बहुत ही जादू नहीं" का उपयोग करने के लिए विम को बताते हैं। Backslashes अभी भी आपको समस्याएं पैदा कर सकता है। देखें:help \V
इडब्री

3
यह समझाने में मदद कर सकता Ctrl+Rहै कि आप एक रजिस्टर का उपयोग कैसे करते हैं, और *बस सिस्टम क्लिपबोर्ड रजिस्टर है। उदाहरण के लिए, आप यह भी कर सकते हैं: yawकिसी शब्द को रजिस्टर में दर्ज करना "(डिफ़ॉल्ट रजिस्टर), फिर /<C-r>"उस स्ट्रिंग को खोजना।
बेन डेविस

5
@ DenilsonSá - आप इस समाधान का उपयोग कर सकते हैं, लेकिन /अपनी खोज करने के लिए उपयोग करने के ?बजाय, इसका उपयोग करें , क्योंकि रिवर्स खोजें डिफ़ॉल्ट रूप से स्लैश से बच जाती हैं। फिर आप Nआगे की दिशा में अपनी खोज जारी रखने के लिए हिट कर सकते हैं ।
ब्रैड पार्क

7

मुझे इस तरह की सुविधा की आवश्यकता कभी महसूस नहीं हुई लेकिन, आपको यह देखते हुए कि विम पर किसी भी सुविधा की आवश्यकता मिल सकती है, मुझे लगता है कि इसमें मदद करनी चाहिए:

नेत्रहीन चयनित पाठ के लिए खोजें

मैंने इसका परीक्षण नहीं किया, लेकिन कोड को देखते हुए, यह वही प्रतीत होता है जो आप खोज रहे हैं।


4

आप विम विक्की में यहाँ इस व्यवहार को बनाने के लिए एक विधि पा सकते हैं ।


अच्छा, मुझे मददगार होने के लिए स्लैश से बचने के लिए संस्करण मिला। vnoremap // y/\V<C-r>=escape(@",'/\')<CR><CR>
शिल्प

1

यह समाधान आपकी विम खोज को दृष्टिगत रूप से चयनित संदर्भ को बहुस्तरीय और एस्केप पात्रों के साथ भी सशक्त बनाता है।

आप में निम्नलिखित कोड जोड़ें .vimrc, और अपने नेत्रहीन चयनित सामग्री को खोजें //। आप चयनित सामग्री को वैश्विक रूप से स्थानापन्न भी कर सकते हैं /s। या //पहले चयनित संदर्भ को स्थानीय रूप से स्थानापन्न करें , और फिर एक क्षेत्र और का चयन करें :'<,'>s//{new_text}

set incsearch
set hlsearch
set ignorecase
function GetVisualSelection()
  let raw_search = @"
  let @/=substitute(escape(raw_search, '\/.*$^~[]'), "\n", '\\n', "g")
endfunction
xnoremap // ""y:call GetVisualSelection()<bar>:set hls<cr>
if has('nvim')
  set inccommand=nosplit
  xnoremap /s ""y:call GetVisualSelection()<cr><bar>:%s/
else
  xnoremap /s ""y:call GetVisualSelection()<cr><bar>:%s//
endif

उपरोक्त कॉन्फ़िगरेशन केवल खोज के बारे में है। मेरे सभी विम कॉन्फ़िगरेशन के लिए, कृपया .vimrc पर जाएं


0

दो अलग-अलग मशीनों पर मेरे विन्यास में, यदि मैं पाठ का चयन करता हूं और फिर /इसे स्वचालित रूप से चयनित पाठ के लिए खोजता है।


यह डिफ़ॉल्ट व्यवहार नहीं है। यहां, जब मैं प्रेस (/ दृश्य मोड में), यह सिर्फ एक खाली रेगीक्स संकेत दिखाता है, मुझे कुछ टाइप करने के लिए इंतजार कर रहा है।
डेनिलसन सिया मिया

अजीब, क्योंकि मैंने इसे सक्षम करने के लिए कभी कुछ नहीं किया।
नाथन फेलमैन

3
कई डिस्ट्रोस एक गैर-मानक विम कॉन्फिग को डिफ़ॉल्ट रूप में जहाज करते हैं (शायद इसलिए कि मानक वीआईएम कॉन्फ़िगरेशन कई उपयोगी सुविधाओं को अक्षम कर देता है, ज्यादातर अपने अनुकूल के लिए)।
sleske
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.