2012-09-28 13 views
8

मैं अपना पहला वीम प्लगइन (viml + पायथन) लिख रहा हूं। प्लगइन में एक कमांड "GetStepCommand()" है और यह मूल रूप से दूरस्थ डेटा स्रोत से डेटा प्राप्त करता है, मैं डेटा को थोड़ा मालिश करता हूं और इसे बफर में कॉपी करता हूं ताकि उपयोगकर्ता इसे संपादित करना प्रारंभ कर सके। एक पैरामीटर है जिसे उपयोगकर्ता को "GetStepsCommand" को आपूर्ति करना है और वह डेटा कहां रहता है, यह खोज पथ है:/परियोजना/प्रक्रिया/चरणविम प्लगइन - कमांड मोड में पैराम का कस्टम ऑटो-पूर्ण

अब यह पथ लंबा हो सकता है और यह आसान है मिस-स्पेल कुछ। तो मैं पैरामीटर भाग के लिए अपना स्वयं का टैब-समापन कार्यान्वित करना चाहता था। विम पहले से ही टैबबिंग द्वारा कमांड को स्वतः पूरा करने का ख्याल रखता है, लेकिन निश्चित रूप से पैरामीटर को पूरा करने के बारे में कोई जानकारी नहीं हो सकती है (कुछ मैं स्वयं को हल करूंगा)।

लेकिन पहले मुझे पता है की जरूरत है: - अगर/कैसे मैं आदेश मोड में कुंजी दबाने को रोक सकता - लाने/कमांड लाइन वर्तमान में उपयोगकर्ता जिस लिख रहा है मिल - अगर यह आदेश-मोड या में है परीक्षण डालें/व्यू-मोड - और आखिरकार एक अपडेटेड कमांड लाइन (टैब-पूर्ण) लौटाएं जो उपयोगकर्ता कुंजीपटल के बाद ':' में लिखना जारी रख सकता है।

किसी भी संकेत दिए गए, टिप्स, लेख, ट्यूटोरियल ... यानी जानकारी बहुत

उत्तर

6

सराहना की जब अपने कस्टम आदेश को तर्क एक फ़ाइल-प्रणाली मार्ग है, यह बस अपने :command परिभाषा को -complete=file जोड़ने की बात है, इस तरह:

:command -nargs=1 -complete=file MyCommand echomsg <q-args> 

आप कमांड लाइन मोड में keypresses रोकना (और, के लिए यह अन्य प्लग-इन के साथ बुरा बातचीत के लिए नेतृत्व करेंगे आप नहीं करना चाहिए!) की आवश्यकता नहीं है विम अन्य डिफ़ॉल्ट पूर्ण करने (सीपी प्रदान करता है :help :command-complete।), यहां तक ​​कि एक कस्टम एक जहां एक विस्क्रिप्ट फ़ंक्शन आवो है उम्मीदवारों को पूरा करने के लिए केड।

+0

सुझावों के लिए धन्यवाद, मैं उन्हें देख लूंगा। हालांकि तर्क एक फ़ाइल-सिस्टम पथ नहीं है, इसका डेटा (डीबी में पथ का वर्णन) सिस्टम से जहां मैं डेटा को बफर में खींच रहा हूं। इसलिए मुझे ऑटो-पूर्णता की अपनी कुछ प्रक्रियाओं को करने की आवश्यकता होगी। –

+0

"कमांड-अपूर्ण" के संदर्भ के लिए धन्यवाद ... बस इसके साथ खेलना समाप्त हो गया ... यहां से कोई समस्या नहीं होनी चाहिए। –

+2

@ KristofferNordström इस विशेष समापन प्रकार के बारे में एक नोट: '-complete = file' इसके नाम के अलावा एक पूर्णता विकल्प नहीं है। यह फाइलों को पूरा करने के लिए पूरा करने का काम करेगा, ** पर्यावरण चर का विस्तार करेगा, आपको अनचाहे स्थान टाइप करने से रोक देगा ** (आमतौर पर '-nargs = 1' और 'MyCommand ab' तर्क' ab' होगा), ** होगा पैटर्न का विस्तार करें और बैकटिक विस्तार करें ** (यदि इन विस्तारों के परिणामस्वरूप '-नर्ग्स' अनुमतियों की तुलना में अधिक फ़ाइल नामों में परिणाम होता है तो एक त्रुटि गूंजती है)। और इन चीजों में से कोई भी मदद में उल्लेख नहीं किया गया है। – ZyX

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