2012-03-20 10 views
6

मैं स्रोत कोड फॉर्मेटर Uncrustify को विम के साथ एकीकृत करना चाहता हूं। नीचे दिए गए दो विकल्पों में से कोई भी पर्याप्त होगा।विम autocmd (फ़ाइल सहेजें, कोड कोडर, रीलोड फ़ाइल)

  1. कोड को प्रारूपित करें जिसे मैं वर्तमान में संपादित कर रहा हूं (यानी gq दबाया जाता है)।
  2. फ़ाइल को सहेजते समय कोड को स्वरूपित करें और फिर स्वरूपित फ़ाइल को वर्तमान विम विंडो में पुनः लोड करें।

विकल्प 1 बेहतर है। मैंने

set formatprg=uncrustify\ -c ~/misc/uncrustify.cfg --no-backup 

यानी मैं कमांड लाइन विकल्पों के साथ Uncrustify को कॉल करता हूं। यह काम नहीं करता है। वी E518: Unknown option: ~/misc/uncrustify.cfg त्रुटि देता है।

विकल्प 2 के लिए, मैं vimrc फ़ाइल

autocmd bufwritepost *.cpp ! ~/bin/uncrustify -c ~/misc/uncrustify.cfg --no-backup <afile> 

फ़ाइल को सहेजने के बाद स्वरूपित है में निम्नलिखित कोशिश की, लेकिन मैं मैन्युअल विम में फ़ाइल पुनः लोड करने के लिए है।

:set formatprg=uncrustify\ -c\ ~/misc/uncrustify.cfg\ --no-backup

अद्यतन

uncrustify प्रिंट "पार्सिंग:: 170 बाइट्स ..." संदेश stderr करने के लिए तो हम /dev/null को यह रीडायरेक्ट करना होगा:

उत्तर

4

आप से बचने की कोशिश की व्हाइटस्पेस है

:set formatprg=uncrustify\ -c\ ~/misc/uncrustify.cfg\ -l\ CPP\ --no-backup\ 2>/dev/null

gq लाइनों पर काम करता है, इसलिए आप दृश्य मोड में आवश्यक लाइनों का चयन कर सकते हैं और gq निष्पादित कर सकते हैं। उदाहरण के लिए, यदि आप पूरी फ़ाइल को ggVGgq निष्पादित करना चाहते हैं।

:help gq

+0

पर अधिक जानकारी VI VI त्रुटि को हटा दी गई। मुझे सीपीपी के रूप में भाषा निर्दिष्ट करने के लिए -l विकल्प भी जोड़ना पड़ा, क्योंकि अविश्वास के लिए इनपुट stdin से है। हालांकि, vi में gq दबाकर फ़ाइल को प्रारूपित नहीं किया जाता है। यदि मैं इसे दोबारा दबाता हूं, तो केवल वर्तमान पंक्ति स्वरूपित होती है और फ़ाइल को संपादित करने के लिए निम्न पंक्ति जोड़ दी जाती है - "पार्सिंग: 57 बाइट्स (57 वर्ण) stdin से भाषा सीपीपी के रूप में"। मुझे लगता है कि मैं जो खो रहा हूं वह है कि संपूर्ण फ़ाइल को पढ़ने के लिए formatprg कमांड को कॉन्फ़िगर कैसे करें, और दूसरी ओर उपरोक्त पंक्ति के आउटपुट को संपादित करने के लिए रोकें। – user1280213

+0

@ user1280213 मैंने जवाब अपडेट किया है, उम्मीद है कि – galymzhan

+0

धन्यवाद। इससे मदद मिली। – user1280213

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