2010-09-17 10 views
11

जब मैं फ़ाइल को सहेजता हूं तो मैं कमांड को कॉल करना चाहता हूं। मैं इसे मैन्युअल रूप से :make पर कॉल कर रहा हूं, लेकिन मेरी इच्छा है कि जब मैं :w और :wq निष्पादित करता हूं तो इसे कॉल किया जा सकता है।विम सहेजने के बाद स्वचालित रूप से बनाते हैं?

मैं इस सुविधा को किसी भी उपफोल्डर में सक्षम करना चाहता हूं जिसमें मेकफ़ाइल नहीं है लेकिन इसके माता-पिता में एक है। वैसे ही जैसे इस विषय कहा है, लेकिन यह मेरे लिए काम करता नहीं करता है:

How to efficiently "make" with Vim

+0

http://stackoverflow.com/questions/729249/how-to-efficiently-make-with-vim –

उत्तर

12
 
:autocmd BufWritePost <buffer> make 
+0

"बनाने के" एक शेल कमांड या एक के रूप में है vim कमांड? क्या यह एक विम समारोह हो सकता है? –

+0

': make' एक vim कमांड है जो 'मेक' खोल कमांड चलाता है और यह सुनिश्चित करने के लिए सबकुछ पढ़ता है कि सबकुछ काम करता है। –

+0

यदि आप कभी-कभी autocommand के बिना सहेजना चाहते हैं, तो 'noautocmd' के साथ प्रीपेड करें। उदाहरण: 'noautocmd wq'। आप 'vim ~/.vimrc' के साथ vimrc संपादित करके F4 जैसे सहेजने और बंद करने के लिए एक कुंजी को मैप कर सकते हैं, फिर लाइन जोड़ें:' नक्शा : noautocmd wq '। मैंने vimrc में सहेजकर सहेजने और बनाने के लिए एक F3 कुंजी भी जोड़ा: 'मानचित्र : w ' – Jason

4
au BufWritePost  *.c 
      \ make 
+0

यह इंगित करने योग्य है कि यह ~/.vimrc में जाता है। –

+1

@ पाब्लो - दरअसल, यह '~/.vim/filetype.vim' में जाता है। – amphetamachine

0

यह एक पुरानी सवाल है, लेकिन मुझे लगता है कि मैं इस साझा करना चाहिए। यहाँ मेरी नुस्खा बहुत अच्छी तरह से चला जाता है, काम करता है:

let autocompiled_filetypes = [ 
     \ 'php' ] " 'ft2', 'ft3', 'etc' 
    au BufWritePost * call feedkeys("\<Esc>") 
     \ | if index(autocompiled_filetypes, &ft) >= 0 | 
     \ | silent! make % | cw | call feedkeys("\<Enter>") 
     \ | endif 
संबंधित मुद्दे