2009-11-19 21 views
31

मुझे पता है कि :map (या :imap, :cmap इत्यादि) के माध्यम से मैपिंग्स सूचीबद्ध करने का एक तरीका है, लेकिन मुझे अपने वीमआरसी फ़ाइल में संग्रहीत मैक्रोज़ सूचीबद्ध करने का कोई तरीका नहीं मिल रहा है (जैसा कि let @a = 'blahblah' में) है।क्या विम में अपने मैपिंग प्रदर्शित करने के समान मैक्रो सूची प्रदर्शित करने का कोई तरीका है?

क्या इसके अंदर मैन्युअल रूप से देखने के बिना ऐसा करने का कोई तरीका है (:split [myvimrcfile] या किसी भी तरह से)?

इसके अलावा, यदि यह संभव है, तो क्या कुछ प्रकार के दस्तावेज संलग्न करने का कोई तरीका है जो मैक्रो के साथ प्रदर्शित करेगा कि यह क्या है? मेरे पास एक मुट्ठी भर है कि मैं काफी कुछ उपयोग करता हूं, लेकिन लगभग 6 सप्ताह अलग करता हूं। उन्हें तुरंत एक टिप्पणी के साथ सूचीबद्ध करना अच्छा लगेगा जो मुझे बताता है कि मैक्रो क्या करता है (या यहां तक ​​कि केवल एक नाम है, इसलिए मैं सुनिश्चित करता हूं कि मैं सही का उपयोग करता हूं)।

धन्यवाद

+0

यह मैपिंग लिखने के लिए उपयोगी हो सकता है। – AlexMA

उत्तर

56

vim में, मैक्रो सिर्फ registers में संग्रहीत हैं। आप किसी भी रजिस्टर की सामग्री को याद कर सकते हैं और इसे मैक्रो के रूप में निष्पादित कर सकते हैं (जो @ करता है)। अपने रजिस्टरों में क्या है इसकी एक सूची देखने के लिए, :reg का उपयोग करें।

+0

दुर्भाग्य से यह रजिस्टर में मैक्रो सूचीबद्ध नहीं करता है जब तक कि मैं इसे पहले याद नहीं करता। मैं जानना चाहता हूं कि मैंने उस रजिस्टर में मैक्रो को मैप किया है जो इसे चलाने से पहले है (इसलिए मुझे पता है कि कौन सा भागना है)। –

+0

वास्तव में? मेरे पास 'vimrc' (जैसे' let @ a = blah') में चीजों के लिए, जब मैं पहली बार शुरू करता हूं तो मैं उन्हें देख सकता हूं (gVim 7.2)। क्या आपके पास कोई फ़ंक्शन या स्क्रिप्ट है जिसे आपको अपने मैक्रोज़ सेट करने के लिए निष्पादित करना है? – jheddings

+0

मैं भी gVim7.2 का उपयोग कर रहा हूँ। मैंने अपने मैक्रोज़ को सीधे मेरी vimrc फ़ाइल में टाइप किया है ... हालांकि यह c: \ प्रोग्राम फ़ाइलों \ vim \ vimfiles \ vimrc_Jay.vim में है जो मेरे _vimrc फ़ाइल में स्रोत $ VIM/vimfiles/vimrc_Jay.vim के माध्यम से लोड किया गया है। क्या आपको लगता है कि यह मुद्दा है? –

3

आप

:reg 

आदेश का उपयोग सभी रजिस्टरों की सामग्री को देख सकते हैं। या इस

:reg ahx 

जैसे एक तर्क स्ट्रिंग आपको रजिस्ट्रार ए, एच, और एक्स की सामग्री दिखाएगी।

इस तरह आप कम से कम देख सकते हैं कि कमांड का अनुक्रम कैसे चलाया जाएगा और उम्मीद है कि आपके लिए एक दूसरे से बताने के लिए पर्याप्त स्पष्ट होगा।

रजिस्टरों में बस टेक्स्ट होता है। आप कमांड अनुक्रम को टेक्स्ट के रूप में पेस्ट कर सकते हैं या आप रजिस्टर को टेक्स्ट में कॉपी कर सकते हैं और फिर इसे कमांड के रूप में चला सकते हैं, इस पर निर्भर करते हुए कि आप रजिस्टर तक कैसे पहुंचते हैं।

मुझे किसी रजिस्टर की सामग्री को संपादित करने का कोई प्रत्यक्ष तरीका नहीं मिला है, लेकिन आप इसे फ़ाइल में पेस्ट कर सकते हैं, इसे संपादित कर सकते हैं और फिर उसे उसी रजिस्टर में सहेज सकते हैं।

आईएचटीएच।

2

/u/jheddings के रूप में लिखा था मैक्रो रजिस्टरों के रूप में जमा हो जाती है और क्या मायने रखता है रजिस्टर (आमतौर पर let @a=blahblah साथ vimrc फ़ाइलों में किया करने के लिए कोड का काम जिस तरह से आप अपने मैक्रो vimrc फ़ाइल में परिभाषित (प्रदर्शित करने के लिए आसान बनाने के लिए है मेरे मामले में यह ~/.vimrc पथ में है) आप इस vim फ़ंक्शन का उपयोग कर सकते हैं:

function! ShowMacros() 10new exe 'r!' . 'grep -B 1 -E "^\s*let @" ~/.vimrc' call cursor(1,1) endfunction

यह क्या करता है:

10new - एक नया vim खिड़की दस लाइनों के साथ

आकार खोलने

exe ​​... - एक आदेश निष्पादित करें और विंडो

कॉल करें ...-

आप सामान्य मोड :call ShowMacros

में tipping द्वारा इस समारोह निष्पादित कर सकते हैं पहली पंक्ति पहले कॉलम में जाएं इसके अतिरिक्त आपके समारोह कॉल करने के लिए जिस तरह से जकड़ना करने के लिए एक कुंजी मानचित्रण या कमांड बना सकते हैं:

:cnoremap sm call ShowMacros()<CR> command! sm call ShowMacros()

This मूल पोस्ट है जहां मैंने उपरोक्त के समान कार्य लिखा था।

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

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