विम में चाल सहित अंतिम सामान्य मोड कमांड दोहराएं


25

विम में, के साथ ., मैं अंतिम सामान्य मोड कमांड दोहरा सकता हूं; उदाहरण के लिए:

dd.

एक पंक्ति को दो बार हटाता है।
लेकिन, अगर मैं टाइप करता हूं

5j.

कर्सर 10 लाइनों को नीचे नहीं ले जाता है। मैं अंतिम सामान्य मोड कमांड को कैसे दोहरा सकता हूं, खासकर एक चाल?

जवाबों:


14

vimदुर्भाग्य से ऐसा नहीं करता है। सबसे अच्छा आप repmo.vim प्लगइन स्थापित कर सकते हैं , जो एक गिनती वाले आंदोलन कमांड को दोहराता है।


11

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


विकल्प 1: इसे कमांड मोड ऑपरेशन में बदल दें

उदाहरण के रूप में 5 पंक्तियों को नीचे ले जाकर, आप कर सकते हैं:

  1. दर्ज करें :norm 5j, यह कर्सर को 5 लाइनों से नीचे ले जाएगा
  2. @:आंदोलन को दोहराने के लिए उपयोग करें

:norm सामान्य के लिए खड़ा है, किसी भी निम्नलिखित स्ट्रिंग को सामान्य मोड के तहत आपके कीस्ट्रोक्स के रूप में माना जाता है


विकल्प 2: मैक्रो का उपयोग करें

  1. qa(रजिस्टर में मैक्रो स्टोर करें a, आप अपना खुद का रजिस्टर पसंद कर सकते हैं qb, qc)
  2. 5j
  3. q (रिकॉर्डिंग रिकॉर्डिंग मैक्रो)
  4. @aअपने रिकॉर्ड आपरेशन को दोहराने के लिए (की जगह aरजिस्टर नाम आपने चुना है, जैसे के साथ। @b, @c)

मैक्रो को सेट करने के लिए अधिक आध्यात्मिक शक्ति की आवश्यकता होती है, लेकिन यह इस अर्थ में अधिक दोहराव वाला है कि आप नवीनतम ऑपरेशनों के बिना अलग-अलग रजिस्टरों में कई ऑपरेशन स्टोर कर सकते हैं।


7

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

" :help ." देखें ।


4

आप के साथ परिवर्तन दोहरा सकते हैं .;कमांड के साथ आंदोलनों को दोहराया जा सकता है । यह आदेश नया प्रतीत होता है और अन्य उत्तरों में उल्लिखित repmo.vim स्क्रिप्ट के समान कार्य करता है।

उदाहरण के लिए, दूसरे अगले पर जाने के लिए c, दबाएँ 2fc। फिर इसे फिर से करने के लिए, बस टाइप करें ;


11
;नया नहीं है। यह एक मानक vi कमांड है। Vi पिछले के प्रकार और लक्ष्य वर्ण (लेकिन संख्यात्मक नहीं तर्क) याद करते हैं f/ F/ t/ Tगति और ;यह दोहराता है। हालांकि यह अन्य गतियों को नहीं दोहराता है।
पायरोक्रेस्टी '

यह पूरा हुआ जो मैं करना चाहता था! धन्यवाद। और स्पष्टीकरण के लिए धन्यवाद @pyrocrasty!
पॉल

0

आप उन पंक्तियों का चयन कर सकते हैं जिन्हें आप अंतिम सामान्य डॉट कमांड को बदलना और निष्पादित करना चाहते हैं

v5j .............. visual select next 5 lines
:'<,'>norm! .      normal mode execute over selection last command '.'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.