2009-08-18 15 views
63

के अंत तक एक विम मैक्रो दोबारा चलाएं, मैं अपने कर्सर से बफर के अंत तक, खुले बफर की प्रत्येक पंक्ति पर "x" रजिस्टर में दर्ज मैक्रो को चलाने के लिए चाहता हूं। मैं उसको कैसे करू?बफर

मैं जानता हूँ कि मैं मैक्रो n बार पुनः चलाने कर सकते हैं:

[email protected] 

... या जब तक मैं अंतिम पंक्ति तक पहुँचने बस नीचे @ पकड़ है, लेकिन मैं चाहता हूँ केवल कुछ कीस्ट्रोक हिट करने के लिए और के साथ किया जा यह।

अग्रिम धन्यवाद।

+0

15 @ एक्स विंडोज जाँचने पर काम नहीं कर –

उत्तर

77

निजी तौर पर कर सकते हैं मैं

VG:normal @x 

संपादित करना होगा: बदला एक रजिस्टर आपने निर्दिष्ट किया है।

+0

अच्छा देखें। मुझे यह पसंद है कि यह समाधान केवल चयनित क्षेत्र पर चल रहा है। – Kevin

+0

मैंने इसे nnoremap <[email protected]> वीजी में मैप किया: मानक @ q PAS

5

[email protected], जब तक आप एक बहुत बड़े बफर है ...

+3

क्यों न सिर्फ '%: सामान्य @ x' या '1, $: सामान्य @ x'? –

+3

यह निश्चित रूप से अधिक सुरुचिपूर्ण समाधान है - मुझे लगता है कि '99 999 @ x' केवल प्राकृतिक चीज है जब आप जल्दबाजी में होते हैं :) – Peter

+1

99 99 999 @ x अंतिम लाइन पर इसे कई बार नहीं चलाएगा आपके पास 99 99 99 लाइनें हैं? –

17

पुनरावर्ती मैक्रो बनाना:

[email protected] 

पूर्व:

[email protected] 

यह करने के लिए वर्तमान लाइन से पहला शब्द UPCASE करेंगे एकल @ ए के साथ फ़ाइल का अंत। लेकिन सुनिश्चित करें कि "एक रजिस्टर खाली है:

let @a="" 
+3

उत्कृष्ट होने के लिए पैटर्न भी शामिल है। यह दृष्टिकोण '%: सामान्य' दृष्टिकोण से अधिक उपयोगी है क्योंकि यह मैक्रो के भीतर किसी भी लाइन की गति को सम्मानित करता है, इसलिए उपयोगी है जहां रेखाएं समान रूप में समान नहीं हैं। मुझे क्रिया को परिभाषित करने के लिए मैक्रो 'ए' बनाना आसान लगता है और उसके बाद मैक्रो 'बी' रिकर्सिव बिट करता है, यानी qb @ a @ bq। –

+2

इससे बचें यदि आपके मैक्रो में एक खोज शामिल है, क्योंकि यह शीर्ष से जारी रहेगी। अगर ऐसा होता है तो रोकने के लिए 'ctrl-c'! –

+2

@IainBallard, ': set nowrapscan' इसे विफल करता है और फ़ाइल के अंत तक पहुंचने पर रोकता है। – ericbn

53

आप (आदेश मोड में)

:%normal @x 
0

विम विकी से, संक्षिप्त संस्करण: qqqqq @q रिकॉर्डिंग यह निष्पादित करने के लिए समाप्त करने के लिए मैक्रो @qq रिकॉर्ड करने के लिए (और फ़ाइल के अंत तक चलेगा)

+1

कृपया, क्या आप प्रलेखन का संदर्भ जोड़ सकते हैं? – aturegano

+1

@aturegano मुझे लगता है कि लेखक एक रिकर्सिव मैक्रो का उपयोग करना चाहता था। अधिक जानकारी के लिए [द विम विकी: रिकॉर्ड एक रिकर्सिव मैक्रो] देखें (http://vim.wikia.com/wiki/Record_a_recursive_macro)। – dylnmc

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