2011-01-25 13 views
38

विम में, आखिरी कमांड को दोहराने का कोई तरीका है चाहे यह एक संपादन था या नहीं, और दूरदर्शिता को पहले मैक्रो रिकॉर्ड करने के बिना?मैं विम में किसी भी कमांड को दोहरा सकता हूं, जैसे emacs में "सी-एक्स जेड"?

उदा। कहें कि मैं :bn टाइप करता हूं, और इसे फिर से करना चाहता हूं (यह गलत फाइल थी)। . दबाकर स्पष्ट रूप से ऐसा नहीं होता है। या शायद मैं gE कर रहा हूं और इसे दोहराना चाहता हूं (स्पष्ट रूप से gE टाइप करने के लिए एक कीस्ट्रोक के साथ) टाइप करने के लिए दर्दनाक है)।

शायद कुछ प्लगइन्स हैं? this question के समान।

उत्तर

50

एक कमांड लाइन आदेश को दोहराने के लिए (यहां तक ​​कि कूलर पूर्वव्यापी प्रभाव से, किसी मैक्रो को आदेश की एक संख्या बाध्य करने के लिए तो एक पिछले 5 आदेशों को दोहराने के लिए [email protected] या कुछ और टाइप कर सकते हैं ... हो सकता है), की कोशिश @:, एक सामान्य/डालने मोड आदेश दोहराने के लिए, . कोशिश,

अपने .vimrc के मानचित्रण के नीचे जोड़ें यदि आप एक ही शॉर्टकट हैं: -

:noremap <C-P> @:<CR> - यह मैप कर देंगे Ctrl + P पिछला आदेश को -लाइन कमांड। आप किसी अन्य कॉम्बो को मैप कर सकते हैं।

+0

तो "जीई" जैसे सामान्य-मोड कमांड के बारे में कैसे? कमांड लाइन से सामान्य-मोड कमांड निष्पादित करने के लिए "मानक" कमांड है, लेकिन यह दोहराना नहीं है ... – johv

+0

'जीई' क्या करता है? मैंने एक शब्द को हटाने के लिए 'dw' की कोशिश की, और फिर मैंने एक और शब्द – Ravikiran

+0

हटाने के लिए '.' दबाया। यह एक गति आदेश है," वर्ड के अंत में पिछड़ा ", ई – johv

12

:help repeating ठेठ दोहराव आदेश (जैसे।, @ :, आदि) प्रदान करेगा। आप repeat.vim आज़मा सकते हैं। इससे आप जो भी खोज रहे हैं उसके करीब हो सकते हैं।

+0

repeat.vim मेरी समस्या हल हो गई :) –

0

आप और अधिक सुविधा के लिए कुछ महत्वपूर्ण करने के लिए @: मैप कर सकते हैं:

:map <F2> @: 

और फिर इसे दोहराता के साथ उपयोग करना आसान है।

9

गति आदेशों के लिए विम में कोई तंत्र नहीं बनाया गया है। ढूँढें और आदेश देने के लिए खोजें और आदेश (f/F/t/T) ; और , दोहराने और उलटा करने के लिए हैं। वहाँ जो अन्य प्रस्ताव आदेशों को दोहराने के लिए उन बाइंडिंग का विस्तार प्लगइन्स के एक जोड़े हैं: "।"

http://www.vim.org/scripts/script.php?script_id=2174

http://www.vim.org/scripts/script.php?script_id=3665

बाद का उपयोग कर ;

5

तुम बस का उपयोग कर सकते gE दोहरा समर्थन करना चाहिए

उदाहरण: आपके पास अपनी फ़ाइल में 10 स्थानों पर "एबीसी" है और आप इसे 5 स्थानों पर "def" से बदलना चाहते हैं।

चरण 1: आदेश टाइप करके एबीसी की पहली घटना का पता लगाएं "/ abc"
चरण 2: एक बार जब कर्सर "abc" पर है, आदेश "CW" द्वारा एबीसी की जगह शब्द "abc"
चरण 3 बाहर निकालने के लिए : प्रतिस्थापन के रूप में "def" टाइप करें और कमांड मोड
पर जाने के लिए एंटर दबाएं चरण 4: इस क्रिया को दोहराने के लिए एबीसी की अगली घटना पर जाने के लिए "n" कमांड टाइप करें और कमांड टाइप करें। "कमांड याद करता है कि आपने "abc" को "def" के साथ पिछली बार बदल दिया है और यह वही करेगा।

संबंधित मुद्दे