विम - खोज द्वारा हाइलाइट किए गए पाठ का चयन करें?


53

विम में, मैं अक्सर वहाँ नेविगेट करने के बजाय एक शब्द या वाक्यांश के लिए हॉप करने के लिए खोज करता हूं h/j/k/l। फिर मैं nघटनाओं के बीच आशा से टकराया ।

कहो कि मुझे यह पाठ मिला है:

Time flies like an arrow; fruit flies like a banana. - Groucho Marx

मैं /an arrowदर्ज करता हूं और हिट करता हूं । उस वाक्यांश पर प्रकाश डाला गया है, और मैं इसके साथ कूदता हूं n

अब मैं नेत्रहीन उस पाठ का चयन करना चाहता हूं , शायद इसे बदलने या इसे हटाने के लिए। (हां, मैं :sप्रतिस्थापन कमांड से अवगत हूं ।)

चूँकि मेरा कर्सर "ए" की शुरुआत में "ए एरो" है, इसलिए मैं हिट कर सकता हूं v, फिर eपूरे वाक्यांश को हाइलाइट करने के लिए एक दो बार दबाएं । लेकिन मुझे लगता है कि एक छोटा और अधिक अर्थपूर्ण तरीका है। आखिरकार, मैंने पहले से ही उस पाठ को निर्दिष्ट कर दिया है जिसमें मेरी दिलचस्पी है।

मैं यह कहने के लिए एक कमांड कैसे लिख सकता हूं "नेत्रहीन वर्तमान खोज चयन का चयन करें?"

जवाबों:


38

आप gnसंस्करण 7.4 में आगे (और gNपीछे की ओर जाने के लिए) का उपयोग कर सकते हैं । यह v//eचाल को बदल देता है ।

अंतिम उपयोग किए गए खोज पैटर्न के लिए आगे खोजें, जैसे `n`, और मैच का चयन करने के लिए विज़ुअल मोड प्रारंभ करें।

अधिक जानकारी के लिए देखें :help gnया यह विमकास्ट करें।


यह एक टिप्पणी को दूसरे उत्तर में दोहराता है और यह बहुत उपयोगी नहीं है क्योंकि यह खड़ा है। यह एक अच्छा विचार हो सकता है यदि आपने प्रलेखन को उद्धृत किया ताकि आपका उत्तर अपने आप खड़ा हो सके।
bwDraco

2
उत्तर को बेहतर बनाने के लिए खुश लेकिन मुझे यकीन नहीं है कि इससे मदद मिलेगी। यह सवाल बड़े करीने से वस्तुनिष्ठता देता है ("अगले खोज परिणाम का चयन करें") और gnजैसा पूछा गया है वैसा ही करता है। इसे एक अलग उत्तर के रूप में प्रस्तुत करना इस बात पर जोर देता है कि यह एक पूर्ण विकल्प है v//e। मैंने अभी प्रलेखन जोड़ने के लिए अपना उत्तर संपादित किया है, क्या यह बेहतर है?
डेविड लॉर्ड

यह अच्छा है, धन्यवाद। यदि आपको सहायता की आवश्यकता है, तो दौरे और सहायता केंद्र को देखना सुनिश्चित करें । सुपर उपयोगकर्ता में आपका स्वागत है, और हम आशा करते हैं कि आप अपने प्रवास का आनंद लेंगे।
bwDraco

1
बहुत खुबस! इस धागे को नवीनतम और सबसे महान के साथ अद्यतन करने के लिए धन्यवाद। :)
नाथन लांग


8

मैंने पाया कि v//eअपने आप में अपर्याप्त है क्योंकि आप दृश्य मोड से बाहर निकलने के बाद, अगले / पिछले खोज परिणाम पर कूदते हुए परिणाम के अंत में कर्सर रखते हैं, इसकी शुरुआत के बजाय आप सामान्य रूप से उम्मीद करेंगे।

इसे ठीक करने के लिए, हमें पहले खोज परिणाम के अंत में कूदना चाहिए ( //e) और फिर नेत्रहीन इसकी शुरुआत ( v??) के लिए चयन करें :

" visually select a search result
nnoremap g/ //e<Enter>v??<Enter>

चीयर्स।


समरूपता के लिए: nnoremap g? ??b<cr>v//e<cr>(एक ही काम करता है लेकिन आगे की बजाय पीछे की ओर खोजता है)
काइल स्ट्रैंड


1

ऐसा करने का एक "डम्बर" तरीका नीचे की तरह एक कुंजी (इस मामले में F5) को मैप करने के लिए है:

nnoremap <F5> v/<c-r>=strpart(@/,1) . '/e+1'<CR><CR>

/an arrowF5 हिट होने के बाद ।


के कारण एक और चरित्र का चयन करता है +1। Omit कि और यह केवल उस भाग का चयन करेगा जिसे खोजा गया था। दूसरी ओर, nnoremap <F5> v//e<CR>ठीक काम करने के लिए लगता है।
डेनिस विलियमसन

@ डेनिस विलियमसन, + 1 का चयन करना आवश्यक है जो खोजा गया था, यदि आप +1 हटाते हैं तो अंतिम वर्ण का चयन नहीं किया जाएगा क्योंकि यह उस चरित्र का चयन नहीं करता है जहां कर्सर है। किसी भी तरह से nnoremap <F5> v // e <CR> ज्यादा बेहतर है।
जॉनी

यह मेरे लिए चरित्र का चयन करता है। अगर मैं प्रेस करता हूं xया cआपके करने के बाद F5लेकिन +1पूरे खोज स्ट्रिंग के बिना , कर्सर के नीचे वर्ण सहित, हटा दिया जाता है।
डेनिस विलियमसन

@ डेनिस विलियमसन, मैंने अभी सीखा कि मेरा 'चयन' विकल्प "अनन्य" पर सेट है, लेकिन डिफ़ॉल्ट मान "समावेशी" है। इसलिए यह आपके लिए +1 के बिना काम करता है। (देखें: चयन में मदद)
जॉनी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.