आप दृश्य मोड चयन का पुन: उपयोग कैसे करते हैं?


163

कोड को संपादित करते समय अक्सर, मैं दृश्य मोड में एक ब्लॉक का चयन करता हूं और एक खोज करता हूं और ब्लॉक पर प्रतिस्थापित करता हूं। हालाँकि, मैं बदलाव करता हूँ, फिर भी यह दृश्य विधा को छोड़ देता है। आप एक ही चयन पर एक नया खोज और प्रतिस्थापन कैसे करते हैं?


वैसे मुझे एक रास्ता मिला, लेकिन यह थोड़ा बोझिल है:: '<,' / s / पुराना / नया / g कोई भी तरीका है इस w / o को टाइप करने के लिए '<,'>?
भूलभुलैया

जवाबों:


243

आप अंतिम चयनित दृश्य क्षेत्र को फिर से चुन सकते हैं gv


4
बहुत बढ़िया! @ यह कैसे पता लगाएं कि यह कमांड अपने आप में w \ o Stackoverflow कैसे है?
स्काईविंदर

6
@ स्कीविंडर: जीवी
हेपेटाइट

4
@ हेपेटाइट: मुझे यकीन नहीं है कि अगर आप यहाँ गाल में जीभ रख रहे हैं, लेकिन यह कमांड आपको दिखाता है: इसके बारे में जानने के बाद जीवी करता है। लेकिन क्या होगा अगर मैं नहीं था ? एक (wo) आदमी को मछली और वो सब सिखाओ।
बजे बेन थुल

@BenThul: मुझे लगता है कि मैंने सवाल गलत समझा। मैं समय के साथ प्रलेखन के थोक के माध्यम से पढ़कर विम की कई विशेषताओं के बारे में जानता हूं, जो " :help" से शुरू होता है ।
4

2
:help select-visualआपको vim @skywinder के अंदर सही मैनुअल तक ले जाना चाहिए।

14

gv निश्चित रूप से सबसे तेज़ विधि है (अंतिम चयन का उपयोग करें), लेकिन यदि आप एक स्थिर सहेजे गए चयन क्षेत्र (या कई) चाहते हैं, तो आप हमेशा मैक्रोज़ बना सकते हैं।

आइए हम कहते हैं कि मैं अपनी वर्तमान पद्धति का चयन करना चाहता हूं, जो 25-35 लाइनों से आता है। मैं एक मैक्रो बना सकता हूं जो टाइप करके पूरी विधि का चयन करता है

q    //start recording
a    //use register a
25G  //Go to line 25
V    //visual-line mode
35G  //Go to line 35
q    // stop recording

फिर मैं उस चयन को वापस टाइप करके प्राप्त कर सकता हूं @a(रजिस्टर में मैक्रो चलाएं)। किसी भी रजिस्टर, लाइनों, या लाइनों के वर्गों के साथ दोहराएं, जो आप चाहते हैं। जाहिर है अगर आप फ़ाइल में बदलाव करते हैं तो चयन में भी बदलाव हो सकता है, इसलिए आप "हार्डकोडिंग" लाइन नंबरों के बजाय अंकों का उपयोग करने पर विचार कर सकते हैं।


zmto दर्ज करें कि आपको लाइन नंबर जानने की जरूरत है। मुझे लगता है कि इसके दो अंकों को परिभाषित करना और फिर उपयोग करना बेहतर है: 'ए,' बी उनके बीच की सीमा पर काम करने के लिए (या
बैकटिक्स के

हाँ, लाइन नंबरों की बात गूंगी थी - मैंने इसे एक उदाहरण के रूप में इस्तेमाल किया कि कैसे चयन मैक्रो बनाने के लिए। अंकों की एक सीमा का उपयोग करना एक दिलचस्प विचार है ...
एलेक्सा

6

gvअंतिम चयन को पुनर्प्राप्त करने के लिए महान काम करता है। लेकिन एक कभी-कभी थोड़ा और अधिक की आवश्यकता होती है।

यदि आपको कभी अधिक लगातार रिकॉर्ड की आवश्यकता होती है, तो इस प्लगइन को देखें जो हम वर्तमान में GitHub पर काम कर रहे हैं।

VisualMarks आपको अपनी चयनित फ़ाइलों को उसी तरह सहेजने और पुनर्स्थापित करने देता है, जैसे आप अपनी फ़ाइलों में विशिष्ट स्थानों को सहेजते और चिह्नित करते हैं m। स्थापित करने के बाद, और डिफ़ॉल्ट विकल्पों के साथ, उपयोग करें:

ma

दृश्य मोड में चिह्नित करने के लिए अपने वर्तमान चयन को बचाने के लिए aतो,

<a

इस चयन पर वापस जाने के लिए सामान्य मोड में।


वाह, यह वाकई बहुत अच्छा लग रहा है। मुझे वह प्लगइन एक कोशिश देना होगा! वैसे, क्या ये विज़ुअल्मर्क mkview के साथ बने रह सकते हैं जैसे आप अंकों के साथ कर सकते हैं?
भूलभुलैया

@ लैब्रिंथ मैं नहीं जानता mkviewलेकिन .. मुझे लगता है कि हाँ एक अलग फ़ाइल में निशान बच गए हैं और .. मेरा सुझाव है कि आप किसी भी तरह की कोशिश करें :) अगर वे आपकी तरह नहीं बने रहते हैं, तो हम आपकी सुविधा पाकर प्रसन्न होंगे GitHub पर अनुरोध करें और try'da प्रक्रिया करें।
इगा-लिटो

1

मान लीजिए कि मैं अलविदा को हैलो के साथ बदलना चाहता था और नीचे दिए गए कोड का चयन किया गया था:

public static void main(String[] args){
    System.out.println("Goodbye World");
}

मैं टाइप करेंगे :s/Goodbye/Hello/और vim के सभी उदाहरणों का स्थान ले लेगा GoodbyeसाथHello

यह केवल विम के रेग्युलर एक्सप्रेशंस और विजुअल मोड सिलेक्शन का संयोजन है। जब आप चुनते हैं, तो इसे ऑटोफिल करना चाहिए'<,'>


1
क्षमा करें, यह वह नहीं है जो मैं पूछ रहा था। मैं जो पूछ रहा हूं वह यह है कि आप किसी अन्य खोज को करने के लिए चयन का पुन: उपयोग कैसे करते हैं और उसी श्रेणी पर प्रतिस्थापित करते हैं जैसा पहले चुना गया था?
भूलभुलैया

1
प्रतिस्थापित करने के बाद, आप दृश्य मोड से बाहर निकल जाएंगे। टाइप करें gvऔर आपका विज़ुअल मोड पिछली चयन स्थिति में वापस आ जाएगा।
स्कॉट गुयेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.