मैं नई विम फ़ाइलों में कंकाल पाठ कैसे जोड़ूँ?


9

मैं C ++ लिखने के लिए Vim का उपयोग करता हूं, और मेरे पास कुछ #include<>कथन, टिप्पणियाँ आदि हैं, जिन्हें मुझे अपनी बनाई प्रत्येक नई फ़ाइल में शामिल करना होगा। मैंने जोड़ लिया है

autocmd BufNewFile *.cpp r C:\(full file path of skeleton text file) 

मेरे vimrc के लिए, क्योंकि मैंने सुना है कि यह मेरे द्वारा आवश्यक पाठ के साथ एक बफर बनाता है। मैं इस पाठ को नई फ़ाइल में कैसे जोड़ूँ? क्या बफर से ऐसा करने का एक आसान तरीका है, या ऐसा करने का एक और आसान तरीका है? मैंने टेम्पलेट प्लगइन्स के बारे में भी थोड़ा सुना है। वहाँ एक बहुत ही सरल है जो मेरे लिए ऐसा कर सकता है?


1
क्या आपने इसे जोड़ने autocmdऔर कंकाल फ़ाइल बनाने के बाद एक नई C ++ फ़ाइल को संपादित करने की कोशिश की ?
मुरु

1
मैंने एक .cpp फ़ाइल एक्सटेंशन के साथ एक नई फ़ाइल बनाने और इसे विम के साथ संपादित करने की कोशिश की। संपादन के लिए इसे खोलने पर, यह अभी भी खाली था कि क्या मुझे एक और कदम उठाने की ज़रूरत है?
इलेक्ट्रिशनलो

2
नहीं, आपको कंकाल फ़ाइल की सामग्री पहले से ही देखी जानी चाहिए। यदि आप मैन्युअल रूप से चलाते हैं तो क्या होगा :r C:\(full file path of skeleton text file)? क्या आपको कोई त्रुटि मिलती है?
muru

3
@electriccello आह, :enewकाम नहीं करेगा, लेकिन :e newfile.cppकाम करना चाहिए अगर newfile.cppपहले से मौजूद नहीं था (भले ही खाली हो)।
मुरु

5
कारण :enewअभ्यस्त काम है क्योंकि आप एक नई, बिना बफर संपादित कर रहे हैं, और है तो एक .cpp फ़ाइल के रूप में सहेजने। BufNewFileयदि आप लक्ष्य फ़ाइल नाम के साथ एक नई फ़ाइल संपादित कर रहे हैं तो केवल ट्रिगर।
फ्रूगलोम्नेकी

जवाबों:


6

एक मौजूदा फ़ाइल से कंकाल पाठ को एक नई फ़ाइल में लाइन डालकर जोड़ा जा सकता है

autocmd BufNewFile *.cpp r C:\(full file path of skeleton text file)

vimrc में। BufNewFileयदि नई फ़ाइल :enewतब दो चरणों में बनाई जाती है, तो यह घटना काम नहीं करती है :sav filename। इसके बजाय, का उपयोग कर एक नई फ़ाइल बनाने :e filenameचलाता BufNewFilevimrc में घटना के autocommand, नई बनाई गई फ़ाइल के लिए कंकाल पाठ फ़ाइल की सामग्री को जोड़ने।


1
यह भी देखें :help template
मार्टिन टूरनोइज

मुझे .vimrcभीड़भाड़ से बचाने के लिए , क्या ~/.vim/पदानुक्रम में कोई अन्य स्थान है जिसे मैं इसमें डाल सकता हूं?
संतोष कुमार

यह नई फ़ाइल में शीर्ष पर एक अतिरिक्त रिक्त पंक्ति भी जोड़ता है।
संतोष कुमार

5

दरअसल, टेम्प्लेट विस्तारक प्लगइन्स आपको इस कार्य में मदद करेंगे। :readटेम्पलेट विस्तारक प्लगइन्स का चरण 0 है।

उदाहरण के लिए, म्यू-टेम्पलेट foo.h से foo.h को शामिल करने का प्रयास करेगा यदि foo.h का पता लगाया जाता है। यह उनके भीतर डायनेमिक डेटा (दिनांक, लेखक, लाइसेंस / कॉपीराइट आदि) के साथ हेडर का विस्तार करने की भी अनुमति देगा।


1

सभी फ़िल्टरों के लिए डिफ़ॉल्ट कंकाल सेटअप करने के लिए और इसे विशिष्ट परियोजना के लिए अनुकूलित करें:

function! s:load_skeleton(type)
  " do nothing if no filetype
  if empty(a:type) | return | endif

  " glob every directory of rtp to search for skeleton/filetype
  let skeletons = globpath(&rtp, 'skeleton/' . a:type, 0, 1)
  if empty(skeletons) | return | endif

  " read last skeleton into 1st line.
  exe '0read ' . skeletons[-1]
endfunction

augroup aug_skeleton
  au!

  " BufNewFile event is trigged when you edit a new file.
  autocmd BufNewFile * call s:load_skeleton(&filetype)
augroup end

के तहत डिफ़ॉल्ट कंकाल रखो ~/.vim/skeleton, जैसे: ~/.vim/skeleton/vim, ~/.vim/skeleton/sh

के तहत परियोजना विशिष्ट कंकाल रखो balabala/project/.vim/skeleton। जब तक ~/.vimपहले दिखाई देता balabala/project/.vimहै :h rtp, balabala/project/skeleton/कंकाल निर्देशिका के रूप में उपयोग किया जाएगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.