2010-05-05 15 views
6

में एक यूयूआईडी डालें मैं फ़ाइल टिप्पणी शीर्षलेख स्वचालित करने की कोशिश कर रहा हूं। मैं vim's autocmd का उपयोग कर अपने शीर्षलेख में uuidgen कमांड के परिणाम को सम्मिलित करने का तरीका जानने का प्रयास कर रहा हूं।vim + C++: गार्ड गार्ड

हेडर के अंदर, प्लेसहोल्डर पाठ, मौजूद है इस तरह:

#ifndef _UUID_ 
#define _UUID_ 

// Code goes here! 

#endif // _UUID_ 

autocmd लाइन .vimrc में _UUID_ को भरने के लिए है:

autocmd bufnewfile *.h exe "1,$s/_UUID_/" . r!uuidgen ."/g" 

समस्या आर के तहत में आ रहा है! uuidgen। मैं autocmd लाइन में पाठ के रूप में शेल-कमांड-निष्पादन का परिणाम कैसे सम्मिलित करूं? या उस मामले के लिए एक vi प्रतिस्थापन आदेश में?

उत्तर

5

उपयोग प्रणाली(), और मत भूलना परिणाम chomp करने ->matchstr(system('uuidgen'), "[^\n\r]*")

एनबी: और अधिक जटिल टेम्पलेट्स के लिए, आप mu-template तरह समाधान इस्तेमाल कर सकते हैं। उदाहरण के लिए, c-header.template में, आपको s:guard के मान को मिलान() + system() पर कॉल करना होगा।

+0

काम किया, बहुत धन्यवाद! कभी-कभी अपने टेम्पलेट्स को चेकआउट करना होगा। –

1

ल्यूक के सुझाव के बाद मेरे जिसके परिणामस्वरूप autocmd लाइन, था भावी पीढ़ी के लिए:

autocmd bufnewfile *.h exe "1,$g/_UUID_/s/_UUID_/" . matchstr(system('uuidgen'), "[^\n\r]*") 
+0

एक साधारण "% s/_UUID_" पर्याप्त होना चाहिए। हालांकि, मुझे उस आदेश के बारे में निश्चित नहीं है जिसमें कई ऑटोकॉम्पैंड निष्पादित किए जाते हैं। यही कारण है कि मैं हमेशा कार्यों (या ftplugins, या स्थानीय vimrcs) ​​पर भरोसा करना पसंद करता हूं जहां autocommands चिंतित हैं। –

+0

@Luc Hermitte - मेरा vim-fu सुधार रहा है। सुझावों के लिए धन्यवाद। –

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