題 如何在不重新啟動vim的情況下重新加載.vimrc文件?


你能編輯你的嗎? .vimrc 文件並重新加載它而不必重新啟動Vim?


504
2018-04-17 14:18


起源




答案:


如果您正在編輯它,可以使用以下命令重新加載:

:so %

% 代表當前文件名(請參閱 :h current-file)和 :so 是的縮寫 :source,它讀取指定文件的內容並將其視為Vim代碼。

通常,要重新加載當前活動的.vimrc,請使用以下命令(請參閱 每日Vim):

:so $MYVIMRC

620
2018-04-17 14:24



看一下 stackoverflow.com/questions/803464/... - mrucci
和 :so ~/.vimrc 也應該在unix上工作 - Yab
:所以〜/ _vimrc適用於Windows。當然,我將_vimrc保存在我的Windows主目錄中,否則這將無效。要查看Vim認為您的主目錄是什麼,請使用 :echo expand("~")。 - Daniel Miladinov
請注意,如果鍵盤映射已經存在,那麼即使它們從新的vimrc中刪除,它們也不會被刪除 - Phani


更好的是,你配置Vim來監視你的變化 .vimrc 並自動重新加載配置。

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

資源: 關於SO的答案

注意:此特定方法監視Vim配置文件名的許多變體,以便它與GUI Vim,Windows Vim等兼容。


76
2018-04-28 09:32



這種方法的表現如何? - Alexej Magura
我發現使用這種命令有時會使我的nvim掛起幾秒鐘或更長時間。 - jdhao


關鍵映射

" 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
  • 處理配置文件的各種名稱
  • 確保它只匹配實際的配置文件(忽略其他目錄中的副本,或者a fugitive:// DIFF)
  • 使用時不會產生錯誤 vim-tiny

當然,只有編輯你的自動重新加載才會發生 vimrc 在vim。


9
2017-09-02 14:12





記住/打字的另一種選擇 :so $MYVIMRC 就是這些映射。它可以讓你快速編輯vimrc(ev)或源vimrc(sv)。

" Quickly open/reload vim
nnoremap <leader>ev :split $MYVIMRC<CR>  
nnoremap <leader>sv :source $MYVIMRC<CR>     

5
2018-06-17 10:36