मैं नेस्टेड मैक्रो कैसे रिकॉर्ड कर सकता हूं?


11

मैं एक मैक्रो को मैक्रो के भीतर रिकॉर्ड करना चाहता हूं, जैसे:

qa
    [ first macro ... ]
    qb
        [ second macro ... ]
    q
    [ some more stuff, involving @b ... ]
q

हालांकि, दूसरे qको पहले मैक्रो को रोकने के अनुरोध के रूप में व्याख्या की जाती है, और बाकी की व्याख्या कमांड के रूप में की जाती है।

क्या किसी मैक्रो के भीतर दूसरी मैक्रो रिकॉर्डिंग शुरू करने का कोई तरीका है?

यदि नहीं, तो क्या मैक्रो के एक निश्चित अनुक्रम को दोहराने के वांछित प्रभाव को प्राप्त करने का कोई अन्य तरीका है, जबकि पहले से ही मैक्रो के अंदर?


1
क्या आप पहले मैक्रो रिकॉर्ड नहीं कर सकते हैं bऔर फिर मैक्रो aकॉलिंग रिकॉर्ड कर सकते हैं @b?
statox

@statox समस्या यह है कि bइसमें विनाशकारी प्रभाव होते हैं, इसलिए मैं इसे पहले रिकॉर्ड नहीं कर सकता (जब तक कि मैं इसे रिकॉर्ड नहीं करना चाहता, uसमय का एक गुच्छा दबाएं , और फिर रिकॉर्डिंग शुरू करें a)।
डोरकनॉब

1
मुझे लगता है कि यह आपका सबसे अच्छा समाधान है। ध्यान दें कि आप इसे किसी अन्य बफ़र ( enew, रिकॉर्डिंग, bd) में भी रिकॉर्ड कर सकते हैं या bअपनी फ़ाइल में अपने मैक्रो की सामग्री को लिखकर रजिस्टर को सीधे संपादित कर सकते हैं और फिर पात्रों को रजिस्टर में रखकर "रिकॉर्डिंग" कर सकते हैं "by
statox

जवाबों:


10

AFAIK, आप qx...qएक शॉट में दो मैक्रो रिकॉर्ड नहीं कर सकते । आपकी आवश्यकता के लिए, आप मैक्रो बनाने के लिए bद्वारा qb....q, तो qa...@bq

यदि आप "रिकॉर्ड" नहीं करना चाहते bहैं let @b='whatever'तो आप कर सकते हैं फिर @bमैक्रो को फिर से चलाएंगे। उदाहरण के लिए "रिकॉर्डिंग" के बिना अपने वर्तमान बफर की सभी सामग्री को हटाने के लिए let @b='ggdG'एक मैक्रो bको परिभाषित करें।

एक मैक्रो डेफिनिशन ट्रिक है, जो आपके प्रश्न के लिए प्रासंगिक नहीं है। यह पुनरावर्ती मैक्रो है, नेस्टेड मैक्रो नहीं। अर्थात्, आप यह कर सकते हैं:

qa..whatever..@aq

यह मैक्रो को पुन: दोहराएगा a। यह कभी-कभी उपयोगी होता है, जब हमें पता नहीं होता है कि हम कितनी बार मैक्रो को फिर से खेलना चाहते हैं। क्योंकि जब त्रुटि होती है, तो मैक्रो रिप्ले स्वतः बंद हो जाएगा। यह 999@aउदाहरण के लिए बचाता है।


1

मैक्रो @ ए के लिए कीस्ट्रोक्स की रिकॉर्डिंग एक ही चीज है जो टेक्स्ट को रजिस्टर करने के लिए उन कीस्ट्रोक्स के अनुरूप है। एक बार रजिस्टर में कुछ जमा हो जाने पर, आप या तो इसे डाल सकते हैं या इसे मैक्रो / कीस्ट्रोक्स के रूप में खेल सकते हैं। तो आप मैक्रो को @a के माध्यम से रिकॉर्ड करना शुरू कर सकते हैं qa, तब जबकि मैक्रो रिकॉर्डिंग कर रहा है, कुछ पाठ को रजिस्टर करने के लिए y , शायद कुछ का उपयोग करके "bye। यदि आप रजिस्टर बी निर्दिष्ट नहीं करते हैं तो यह सब एक अलग रजिस्टर में पाठ है। अब उस रजिस्टर b में कुछ टेक्स्ट है, आप उस टेक्स्ट को किस्टोक्स के रूप में दबाकर वापस खेल सकते हैं @b। आप यह भी कर सकते हैं कि मैक्रो @ ए अभी भी रिकॉर्ड किया जा रहा है। यह metamacrolicious है!

इसका मुख्य नुकसान यह है कि कुछ विम्सस्क्रिप्ट फ़ंक्शन लिखना आसान होगा जो आपको चाहिए, और फिर मैक्रो रिकॉर्डिंग के दौरान इसे कॉल करें। मैक्रोज़ की सुंदरता यह है कि आप रिकॉर्ड करते समय आप जो रिकॉर्ड कर रहे हैं उसका प्रभाव आप देख सकते हैं, लेकिन यह मेटा मैक्रो रिकॉर्डिंग तकनीक कुछ हद तक दूर ले जाती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.