कैसे आप अपने .vimrc फ़ाइल को पुनः लोड किए बिना विम को पुनः लोड करते हैं?


534

क्या आप अपनी .vimrcफ़ाइल को संपादित कर सकते हैं और विम को पुनः आरंभ किए बिना इसे पुनः लोड कर सकते हैं ?

जवाबों:


661

यदि आप इसे संपादित कर रहे हैं, तो आप इसे फिर से लोड कर सकते हैं:

:so %

%वर्तमान फ़ाइल नाम के लिए खड़ा है (देखें :h current-file) और इसके :soलिए छोटा है :source, जो निर्दिष्ट फ़ाइल की सामग्री को पढ़ता है और इसे विम कोड के रूप में मानता है।

सामान्य तौर पर, वर्तमान में सक्रिय .vimrc को पुनः लोड करने के लिए, निम्नलिखित का उपयोग करें ( दैनिक विम देखें ):

:so $MYVIMRC

2
पर एक नज़र डालें stackoverflow.com/questions/803464/...
mrucci

36
और :so ~/.vimrcयूनिक्स पर भी काम करना चाहिए
याब

3
: तो ~ / _vimrc खिड़कियों पर काम करता है। बेशक, मैं अपने _vimrc को अपने विंडोज़ होम डायरेक्टरी में रखता हूं, वरना यह काम नहीं करेगा। यह देखने के लिए कि विम आपके घर की निर्देशिका का क्या उपयोग करता है :echo expand("~")
डैनियल मिल्डिनोव

3
ध्यान दें कि यदि कीबोर्ड मैपिंग पहले से ही था, तो वे नए vimrc से हटाए जाने पर भी नहीं मिटेंगे
Phani

या :so ~/.vim/gvimrcजहां भी आप इसे
डालते हैं

79

इससे भी बेहतर, आप अपने परिवर्तनों को देखने के लिए विम को कॉन्फ़िगर करें .vimrcऔर स्वचालित रूप से कॉन्फ़िगरेशन को फिर से लोड करें।

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

स्रोत: एसओ पर यह जवाब

नोट: यह विशेष विधि विम विन्यास फ़ाइलनाम के कई रूपों के लिए देखता है ताकि यह GUI विम, विंडोज विम, आदि के साथ संगत हो।


2
यह तरीका कितना अच्छा है?
अलेक्सज मगुरा

मुझे लगता है कि इस तरह के आदेश का उपयोग करना कभी-कभी कुछ सेकंड या उससे अधिक समय के लिए मेरे एनवीएम को लटका देता है।
जेडीए

11

कुंजी मैपिंग

" 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विम को संपादित करेंगे ।


5

याद रखने / टाइप करने का एक विकल्प :so $MYVIMRCये मैपिंग है। यह आपको जल्दी से vimrc ( ev) या स्रोत vimrc ( sv) को संपादित करने देता है ।

" Quickly open/reload vim
nnoremap <leader>ev :split $MYVIMRC<CR>  
nnoremap <leader>sv :source $MYVIMRC<CR>     
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.