क्या पुनः आरंभ किए बिना विम कॉन्फ़िगरेशन लागू करना संभव है?


80

मैं .vimrcविम से फ़ाइल को संपादित करना चाहता हूं और विम को पुनरारंभ किए बिना उन्हें लागू करना चाहता हूं ।

जवाबों:


80

हां, बस उपयोग करें :so % अपने .vimrc को संपादित करते समय कमांड का ।

यदि आप अपने कॉन्फ़िगरेशन को स्वतः लोड करना चाहते हैं, तो आपको निम्नलिखित कमांड जोड़ना चाहिए:

augroup myvimrchooks
    au!
    autocmd bufwritepost .vimrc source $MYVIMRC
augroup END

यदि आप कई बार अपने कॉन्फ़िगरेशन को सहेजते हैं, तो "एक्सपोनेंशियल" रीलोडिंग से बचने के लिए ऑटोकॉमैंड का समूहन यहां है।


ध्यान दें कि यह साथ काम नहीं करता gvimrcया यदि आपकी फ़ाइल कहा जाता है _vimrcया vimrc, या यदि आप एक फ़ाइल बुलाया संपादित .vimrcएक और निर्देशिका में। इन मुद्दों को संबोधित करने के लिए मेरा जवाब देखें।
टॉम हेल

मेरे लिए यह त्रुटियों जैसी असफलता है Function Inc already exist, add ! to replace it
हाई-एंजेल

इस संदर्भ में एग्रुप क्या कार्य करता है? क्या यह बस के रूप में फिर से लिखा नहीं जा सकता है autocmd! bufwritepost .vimrc source ~/.vimrc? यहां तक ​​कि अगर समूह को किसी कारण से आवश्यक है, तो क्या लाइन 2 को छोड़ा नहीं जा सकता है अगर लाइन 3 को फिर से शुरू करने के लिए फिर से लिखा जाए autocmd!?
जॉन कराहलिस

46

यदि आप मैक / विंडोज / लिनक्स और पर चलते हैं तो यहां एक अधिक क्रॉस-प्लेटफॉर्म संगत संस्करण है gvimrc:

augroup myvimrc
    au!
    au BufWritePost .vimrc,_vimrc,vimrc,.gvimrc,_gvimrc,gvimrc so $MYVIMRC | if has('gui_running') | so $MYGVIMRC | endif
augroup END

स्वतः पूर्णता सभी संभावित *vimrcफ़ाइलों को देखता है और जब कोई बदलता है, तो यह vimrcफ़ाइल को फिर से लोड करता है gvimrcयदि GUI चल रहा है।


5
जीयूआई विम शुरू होने पर इसे सेट किया जाता है। देखें:help gvimrc
16

3
काल्पनिक, धन्यवाद। यदि आप ऐसा करते हैं, तो मस्तिष्क के मस्से से बचें जो मैंने अभी किया है ... मैंने gvim खोला, इसे मेरे vimrc में जोड़ा, और फिर इसकी पुष्टि करने का प्रयास किया। नहीं ... 20 मिनट बाद मुझे एहसास हुआ कि AUTOCMD WAS से शुरू होने के बाद मुझे बहुत अच्छा लगा। एक बार जब मैंने ऐसा किया, तो निश्चित रूप से, सब कुछ काम किया। मुझे लगता है कि यह मेरे लिए थोड़ा बहुत मेटा था, और मेरे पास एक मानसिक "स्टैक ओवरफ्लो" था।
चार्ली फूल

3
मैंने इसका उपयोग किया है, लेकिन यह भी देखें कि क्या $GVIMRCमौजूद है, क्योंकि कभी-कभी यह नहीं होता है। if has('gui_running') && filereadable($MYGVIMRC)
k107

केवल एक चीज जो मेरे लिए पहली बार अजीब थी, वह यह है कि पहले से ही सेट किए गए सामान को रखते हुए vimrc फ़ाइल को पुनः लोड करें। उदाहरण के लिए, यदि आपके पास शुरू में अपने vimrc में "सेट नंबर" है, और फिर आप उस लाइन पर टिप्पणी करते हैं और उस दस्तावेज़ को सहेजते हैं जो आपके पास अभी भी बाईं ओर है। लेकिन इसका वास्तव में अर्थ है ... यदि आप कुछ अक्षम करना चाहते हैं, तो आपको इसे मैन्युअल रूप से करना चाहिए।
22

1
उपयोग नहीं करने का कोई कारण au BufWritePost $MYVIMRCया au BufWritePost $MYVIMRC,$MYGVIMRC?
phs

35

स्रोत अपनी vimrc फ़ाइल :source ~/.vimrc


1
खिड़कियों पर, बस: तो ~ /
_vimrc

8
" Quickly edit/reload this configuration file
nnoremap gev :e $MYVIMRC<CR>
nnoremap gsv :so $MYVIMRC<CR>

करने के लिए स्वचालित रूप से बचाने पर पुनः लोड, जोड़ने अपने लिए निम्न $MYVIMRC:

if has ('autocmd') " Remain compatible with earlier versions
 augroup vimrc     " Source vim configuration upon save
    autocmd! BufWritePost $MYVIMRC source % | echom "Reloaded " . $MYVIMRC | redraw
    autocmd! BufWritePost $MYGVIMRC if has('gui_running') | so % | echom "Reloaded " . $MYGVIMRC | endif | redraw
  augroup END
endif " has autocmd

और फिर आखिरी बार, टाइप करें:

:so %

अगली बार जब आप अपने को बचाएंगे vimrc, तो यह स्वचालित रूप से पुनः लोड हो जाएगा।

विशेषताएं:

  • उपयोगकर्ता को बताता है कि क्या हुआ है (लॉगिंग भी :messages)
  • कॉन्फ़िगरेशन फ़ाइलों के लिए विभिन्न नामों को संभालता है
  • यह सुनिश्चित करता है कि यह केवल वास्तविक कॉन्फ़िगरेशन फ़ाइल से मेल खाता है (अन्य निर्देशिकाओं में प्रतियों की उपेक्षा करता है, या एक fugitive://भिन्न)
  • उपयोग करने पर कोई त्रुटि उत्पन्न नहीं होगी vim-tiny

बेशक, स्वचालित पुनः लोड केवल तभी होगा जब आप अपने vimrcविम को संपादित करेंगे ।


यह केवल तभी काम करता है जब फाइलें उसी उदाहरण में खुली हों vimजिसमें मैं संपादन कर रहा हूं $MYVIMRC। यदि वे एक अलग टर्मिनल में हैं, उदाहरण के लिए, तो मुझे अभी भी मैन्युअल रूप से स्रोत है $MYVIMRC। क्या इस से निकाल पाने के लिए कोई तरीका है?
Zoey Hewll

1
ऐसा नहीं है कि मुझे पता है - यह तब काम करता है जब वर्तमान vimफ़ाइल को लिखता है। फ़ाइल पर माइम की निगरानी करना संभव हो सकता है, लेकिन यह सुनिश्चित करने के लिए अनिश्चित है कि बिना अतुल्यकालिक मतदान के कैसे करें।
टॉम हेल

1

निरंकुश! bufwritepost _vimrc स्रोत%

जब आप सहेजते हैं तो यह _vimrc फ़ाइल में सभी कॉन्फ़िगरेशन को स्वचालित रूप से पुनः लोड करेगा

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