2012-04-30 14 views
7

मैं फ़ाइल सहेजने के बाद कुछ धीरे-धीरे संचालन करने के लिए विम का उपयोग करता हूं, उन परिचालनों को मेरा विम फंस गया है, इसलिए मुझे आश्चर्य है कि उन परिचालनों को पृष्ठभूमि में चलाने के लिए कुछ एसिंक्रनाइज़ विधि है?विम स्क्रिप्ट को एसिंक्रनाइज़ करें?

डेमो:

autocmd BufWritePost *.js call DoSomeTing() 

function! DoSomeThing() 
    " some operations really slow 
endfunction 
+0

मुझे नहीं लगता कि एक सामान्य एसिंक विधि है। हालांकि, यदि आप चाहते हैं कि बाहरी प्रक्रिया लॉन्च करना शामिल है (उदाहरण के लिए उस .js फ़ाइल को अपलोड करने के लिए ftp) तो आप शायद इसे एसिंक तरीके से लॉन्च कर सकते हैं। – Benj

+0

AFAIK विम एकल धागा है। आप 'टैग' पीढ़ी जैसे बाह्य पृष्ठभूमि प्रक्रियाओं को चला सकते हैं लेकिन विम फ़ंक्शंस नहीं। – romainl

+0

@ बेंज @romainl बाहरी प्रक्रिया शायद कुछ vim कमांड जैसे ': lcd' –

उत्तर

5

आप और अधिक शक्तिशाली भाषा बाइंडिंग में से एक (जैसे अजगर के रूप में) का उपयोग कर सकते एक नया धागा शुरू करने और वहाँ में अपने काम करने के लिए। हालांकि, यह सही होने के लिए आम तौर पर वास्तव में एक कठिन काम है। इसके अलावा आपको वास्तव में किसी भी विम संरचनाओं को संशोधित करने या इन अन्य धागे से किसी भी विम फ़ंक्शंस को कॉल करने का प्रयास नहीं करना चाहिए - विम कोर में कुछ भी थ्रेड सुरक्षित नहीं है।

+0

क्या यह काम करेगा? मैं सहमत हूं कि आप समर्थित भाषाओं में से एक में आसानी से एक नया थ्रेड बना सकते हैं, लेकिन विम तब भी इंतजार करेगा जब तक कि वह पाइथन/पर्ल/रूबी प्रक्रिया वापस आने से पहले समाप्त हो जाए। तो इसे काम करने के लिए आपको वास्तव में एक अलग प्रक्रिया बनाना होगा जो विम और सेवाओं async अनुरोधों के साथ समानांतर में चलता है। – Benj

+1

मुझे यकीन नहीं है कि प्रक्रिया समाप्त होने के लिए प्रतीक्षा कर रहे वीम द्वारा आपका क्या मतलब है - कोई नई प्रक्रिया नहीं होगी, उदाहरण के लिए विम को + पायथन के साथ संकलित किया गया है, तो मैं विम में एम्बेडेड भाषा का उपयोग करके धागा बनाने के बारे में बात कर रहा हूं। –

+0

यदि विम + पायथन के साथ संकलित किया गया है, तो इसका मतलब है कि जब एक पाइथन स्क्रिप्ट एक विम फ़ंक्शन में एम्बेड की जाती है, तो उस फ़ंक्शन को चलाने की आवश्यकता होने पर एक अजगर बाल प्रक्रिया लॉन्च की जाती है। यह बच्चा प्रक्रिया (मुझे लगता है) विम फ़ंक्शन के जीवनकाल के लिए जीने का अर्थ है कि इससे कोई फर्क नहीं पड़ता कि आप पाइथन में कितने धागे बनाते हैं, फिर भी विम फ़ंक्शन वापस नहीं आ सकता है। – Benj

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