2012-11-24 14 views
7

में कस्टम पॉपअप मेनू vim में पॉपअप मेनू के साथ टैब पूर्णता सही कॉन्फ़िगरेशन के साथ बहुत अच्छी तरह से काम करता है। http://vim.wikia.com/wiki/Make_Vim_completion_popup_menu_work_just_like_in_an_IDEवीआईएम

मेरे पास कोड जेनरेटर और कोड मैनिपुलेटिंग प्रोग्राम का एक छोटा संग्रह है जो मैं विम में उपयोग करता हूं। प्रक्रिया है:

1. initiate visual mode 
2. highlight text 
3. :'<,'>!hashify 

मैं कार्यों का चयन करने के लिए विम पॉपअप मेनू का उपयोग करना चाहता हूं।

नई प्रक्रिया होगी:

1. initiate visual mode 
2. highlight text 
3. <Tab> -- select transform option from menu 

वहाँ एक vimscript इंटरफ़ेस जो इस के लिए इस्तेमाल किया जा सकता है?

उत्तर

2

टेक्स्ट टुकड़े की पसंद डालने के लिए सम्मिलित मोड पूर्णता पॉपअप का उपयोग किया जा सकता है। इसे लागू करने के दो तरीके हैं, :help complete-functions और :help complete() देखें। यदि आपका कोड जेनरेटर एकल टुकड़े (और बहुत लंबा नहीं) टेक्स्ट टुकड़े डालने के लिए लौटाता है, तो आप जेनरेटर को system(...) के माध्यम से आवेदक लगा सकते हैं और फिर लौटाए गए मानों को पूरा करने के फ़ंक्शन पर फ़ीड कर सकते हैं।

दूसरी ओर, यदि मेनू विकल्पों सीधे डाला पाठ के अनुरूप नहीं है, लेकिन कर रहे हैं सामरिक विकल्प या कार्रवाई, सबसे प्लगइन्स इस तरह की एक चयन मेनू, की तरह स्टाइल में निर्मित मेनू (जैसे :ilist से) मौजूद:

:echohl Title 
:echo 'Code fragments:' 
:echohl None 
:echo '1. foo' 
:echo '2. bar' 
:let choice = nr2str(getchar()) 
:if choice == 1 ... 

फिर, पाठ पसंद करने के लिए इसी :normal! iText, या setline() के माध्यम से डालें।

जैसा कि आपको दृश्य मोड से पूरा होने की आवश्यकता दिखाई देती है, तो आप पहले y के साथ अपना मैपिंग शुरू करके चयनित टेक्स्ट को कैप्चर कर सकते हैं।

+0

यह मेरा सवाल का जवाब की तरह लग रहा है 'हाँ' है। मैं कुछ शोध और प्रयोग करूंगा और देख सकता हूं कि मैं किसके साथ आ सकता हूं। धन्यवाद। – ddoxey

3

This plugin विम के लिए उस तरह पॉपअप बनाने के लिए अनुमति देता है:

enter image description here