2013-10-08 6 views
5

मेरे पास एक लिनक्स मशीन है जिसका उपयोग मैं अपनी परियोजना (सी ++/मेक) बनाने के लिए करता हूं। मेरे पास मैक मशीन पर प्रोजेक्ट निर्देशिका है जो मैकवीम का उपयोग कर संपादन करता है।विम क्विकफ़िक्स और रिमोट संकलन

मैं makeprg सेटिंग सेट करने में कामयाब रहा ताकि :make मेरी लिनक्स मशीन पर रिमोट संकलन जारी करे। हालांकि, मैं भी विम की क्विकफिक्स सुविधा का उपयोग करना चाहूंगा। मेरे पास एकमात्र समस्या यह है कि फ़ाइलपैथ मेल नहीं खाते हैं।

उदा। रिमोट मशीन पर, स्रोत और मेकफ़ाइल ~/repos/myproject में रहता है जो मेरे मैक में /net/mylinuxmachine/home/myuser/repos/myproject पर चढ़ाया जाता है। इसके परिणामस्वरूप एक संकलन त्रुटि के मामले में प्रभावित फ़ाइल को सही तरीके से खोलना नहीं है।

मैं निर्धारित किया है मेरी makeprg इस तरह:

:set makeprg=ssh\ mylinuxmachine\ \"make\ -C\ repos/myproject\" 

कुछ भी मैं इस काम करने के लिए कुछ नहीं कर सकता है?

अग्रिम धन्यवाद!

उत्तर

2

समझ गया। इनगो ने मुझे सही दिशा में धक्का दिया।

प्रयोग मैं सभी से बचने का थक मिल गया के दौरान

, तो मैं निम्नलिखित छोटे shellscript बनाया:

project=$1 
ssh mylinuxmachine "make -C repos/$myproject" 2>&1 | sed "s#/home/myuser/repos/$project/##g" 

यह देखते हुए परियोजना निर्देशिका पर make -C फोन करेगा, stdout और stderr (विलय के बाद से त्रुटि संदेश के माध्यम से बाहर आ stderr) और पाइप जो कि sed में है जो केवल त्रुटि संदेशों में पूर्ण पथ को हटा देगा (जिसके परिणामस्वरूप परियोजना मूल आधार से प्रभावित फ़ाइल का सापेक्ष पथ होगा - जहां मेरा पीडब्ल्यू आमतौर पर विम के भीतर होता है)।

तब मैं परियोजना के साथ स्क्रिप्ट को निष्पादित करने के लिए makeprg सेट मैं का निर्माण करना चाहते:

:set makeprg=./makeprg.sh\ myproject 

वर्क्स अब एक आकर्षण की तरह!

धन्यवाद

+1

में बताया खुशी है कि आप एक समाधान मिल गया है! ': Let और makeprg =' ... '' के बजाय 'सेट' के बजाय थोड़ा सा भाग निकलता, लेकिन एक शेल स्क्रिप्ट निकालने से भी एक अच्छा दृष्टिकोण दिखता है! –

6

जब से तुम 'makeprg' विकल्प जोड़ तोड़ कर रहे हैं, वैसे भी, मैं पूर्वनिर्धारित फ़िल्टर (जैसे sed के साथ) जोड़ना होगा कि इस तरह स्थानीय माउंट बात करने के लिए दूरदराज के filespec, धर्मान्तरित:

:set makeprg=ssh\ mylinuxmachine\ \"make\ -C\ repos/myproject\"\|sed\ \"s#/home/myuser#/net/mylinuxmachine/home/myuser#g\" 
+0

वोट दें, कारण तुम मुझे सही दिशा – DeX3

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