खोज…
एक मैक्रो रिकॉर्डिंग
मैक्रो बनाने का एक तरीका यह रिकॉर्ड करना है।
मैक्रो रिकॉर्ड करना शुरू करें और इसे एक रजिस्टर में सहेजें (इस उदाहरण में, हम a
उपयोग करेंगे, लेकिन यह ऐसा कोई भी रजिस्टर हो सकता है जिसे आप सामान्य रूप से पाठ को छोड़ सकते हैं):
qa
फिर उन कमांड को चलाएं जिन्हें आप मैक्रो में रिकॉर्ड करना चाहते हैं (यहां, हम <li>
टैग के साथ एक पंक्ति की सामग्री को घेरेंगे):
I<li><ESC>A</li>
जब हम उन कमांड के साथ समाप्त हो जाते हैं जिन्हें हम मैक्रो में रिकॉर्ड करना चाहते हैं, तो रिकॉर्डिंग बंद करें:
q
अब, किसी भी समय हम a
में संग्रहीत आदेशों के रिकॉर्ड किए गए अनुक्रम को निष्पादित करना चाहते हैं, उपयोग करें:
@a
और विम रिकॉर्ड किए गए अनुक्रम को दोहराएगा।
अगली बार जब आप अंतिम मैक्रो को दोहराना चाहेंगे जिसका उपयोग किया गया था तो आप @
डबल टाइप कर सकते हैं:
@@
और एक अतिरिक्त बोनस के रूप में यह याद रखना अच्छा है कि यदि आप एक कमांड से पहले एक नंबर डालते हैं तो वह इसे कई बार दोहराएगा। तो, आप मैक्रो रजिस्टर में सहेजा दोहराने a
साथ 20 बार:
20@a
विम मैक्रो का संपादन
कभी-कभी आप एक लंबी मैक्रो के साथ एक गलती करेंगे, लेकिन इसे पूरी तरह से फिर से रिकॉर्ड करने के बजाय इसे संपादित करेंगे। आप निम्न प्रक्रिया का उपयोग करके ऐसा कर सकते हैं:
मैक्रो को
"<register>p
साथ एक खाली लाइन पर रखें।यदि आपका मैक्रो रजिस्टर
a
में बचाa
, तो कमांड"ap
।आवश्यकतानुसार मैक्रो संपादित करें।
कर्सर को लाइन की शुरुआत में ले जाकर सही रजिस्टर में जमा करें और
"<register>y$
।आप मूल रजिस्टर का फिर से उपयोग कर सकते हैं या किसी अन्य का उपयोग कर सकते हैं। यदि आप रजिस्टर
b
का उपयोग करना चाहते हैं, तो कमांड"by$
या"<register>d$
का उपयोग करके है (अप्रयुक्त कोड को हटाता है)
पुनरावर्ती मैक्रोज़
विम मैक्रो भी पुनरावर्ती हो सकता है। यह तब उपयोगी होता है जब आपको फ़ाइल के अंत तक हर लाइन (या अन्य टेक्स्ट ऑब्जेक्ट) पर कार्य करने की आवश्यकता होती है।
एक पुनरावर्ती मैक्रो रिकॉर्ड करने के लिए, एक खाली रजिस्टर के साथ शुरू करें। (एक रजिस्टर q<register>q
का उपयोग करके खाली किया जा सकता है।)
शुरू करने और खत्म करने के लिए प्रत्येक पंक्ति पर एक सुसंगत प्रारंभिक बिंदु चुनें।
रिकॉर्डिंग समाप्त करने से पहले, मैक्रो को अंतिम कमांड के रूप में लागू करें। (यही कारण है कि रजिस्टर खाली होना चाहिए: इसलिए यह कुछ भी नहीं करेगा, क्योंकि मैक्रो अभी तक मौजूद नहीं है)।
उदाहरण, दिया गया पाठ:
line 1
line 2
line 3
foo bar
more random text
.
.
.
line ???
सामान्य मोड में, पहली पंक्ति पर कर्सर के साथ और एक खाली रजिस्टर a
, इस मैक्रो को रिकॉर्ड कर सकता है:
qaI"<Esc>A"<Esc>j@aq
तब @a
एकल मंगलाचरण के @a
, फ़ाइल की सभी पंक्तियाँ अब दोहरे उद्धरण चिह्नों के अंदर होंगी।
स्थूल क्या है?
एक मैक्रो किस्ट्रोक्स की एक श्रृंखला है जिसका अर्थ है विम द्वारा बिना किसी देरी के "बजाया गया"। मैक्रोज़ को रजिस्टरों या चर में संग्रहीत किया जा सकता है, कुंजियों के लिए बाध्य किया जा सकता है, या कमांड लाइन पर निष्पादित किया जा सकता है।
यहाँ एक सरल मैक्रो है जो एक लाइन पर तीसरे word
को अपरकेस करता है:
0wwgUiw
उस मैक्रो को रजिस्टर q
में दर्ज किया जा सकता है:
qq start recording into register q
0wwgUiw
q stop recording
या रजिस्टर q
में सीधे बचाया:
:let @q = '0wwgUiw'
के साथ वापस खेला जाना:
@q
लेकिन इसे सीधे कमांड-लाइन में टाइप किया जा सकता है:
:normal 0wwgUiw
के माध्यम से त्वरित प्लेबैक के लिए :normal
आदेश।
या एक चर में डाल दिया:
:let myvar = '0wwgUiw'
के साथ वापस खेला जाना:
@=myvar
या मानचित्रण के रूप में सहेजा गया:
nnoremap <key> 0wwgUiw
<key>
दबाकर वापस खेला जाए।
यदि आप बाद में पुन: उपयोग के लिए एक मैक्रो स्टोर करना चाहते हैं तो आप इन्सर्ट मोड में टाइप कर सकते हैं:
<C-r>q
यह मैक्रो को रजिस्टर q
में सम्मिलित करता है (इस उदाहरण में: 0wwgUiw
)। आप अपने vimrc
में मैक्रो को परिभाषित करने के लिए इस आउटपुट का उपयोग कर सकते हैं:
let @q='0wwgUiw'
हर बार जब आप vim शुरू करते हैं तो रजिस्टर q
को इस मैक्रो के साथ आरंभीकृत किया जाता है।
रिकॉर्ड और फिर से खेलना कार्रवाई (मैक्रोज़)
q
कमांड के साथ हम बहुत सारे थकाऊ काम को सरल बना सकते हैं।
उदाहरण 1. उत्पन्न सरणी अनुक्रम (1 से 20)।
STEP 1. इन्सर्ट मोड डालने के लिए i
दबाएं, इनपुट 1
1
कदम 2. रिकॉर्ड निम्न क्रिया: "अंतिम संख्या को अगली पंक्ति में जोड़ें, और संख्या बढ़ाएँ"
- इनपुट मोड से बाहर निकलने के लिए
esc
टाइप करें - टाइप
qa
रिकॉर्ड मोड में प्रवेश करने, बफर का उपयोग करa
- टाइप करें
yy
औरp
करंट लाइन कॉपी करें और अगली लाइन के रूप में पेस्ट करें -
ctrl
+a
से इंक्रीमेंट नंबर टाइप करें - रिकॉर्ड खत्म करने के लिए फिर से
q
टाइप करें
1
2
STEP 3. 18 बार रिप्ले एक्शन करें।
टाइप 18@a
को रिप्ले एक्शन 3 और एक्शन 4 को चरण 2 में।
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20