如何在不重新启动vim的情况下重新加载.vimrc文件?


534

您可以在.vimrc不重新启动Vim的情况下编辑并重新加载文件吗?

Answers:


661

如果您正在编辑它,则可以使用以下命令重新加载它:

:so %

%代表当前文件名(请参阅:h current-file),:so是的缩写:source,它读取指定文件的内容并将其视为Vim代码。

通常,要重新加载当前活动的.vimrc,请使用以下命令(请参见Daily Vim):

:so $MYVIMRC


36
并且也:so ~/.vimrc应该在unix上工作
-Yab

3
:so〜/ _vimrc在Windows上工作。当然,我将_vimrc保留在Windows主目录中,否则将无法正常工作。要查看Vim认为您的主目录,请使用:echo expand("~")
Daniel Miladinov 2012年

3
请注意,如果键盘映射已经存在,则即使将其从新的vimrc中删除也不会删除它们
Phani

或者,:so ~/.vim/gvimrc或任何你把它当然
NeilG

79

更好的是,您将Vim配置为监视您的更改.vimrc并自动重新加载配置。

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

资料来源:关于这个的答案

注意:此特定方法会监视Vim配置文件名的多种变化,以便与GUI Vim,Windows Vim等兼容。


2
这种方法的表现如何?
Alexej Magura

我发现使用这种命令有时会使我的nvim挂起几秒钟或更长时间。
jdhao

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://diff)
  • 如果使用,不会产生错误 vim-tiny

当然,仅当您vimrc在vim中进行编辑时,才会自动重新加载。


5

:so $MYVIMRC这些映射是记忆/键入的一种替代方法。它使您可以快速编辑vimrc(ev)或源vimrc(sv)。

" Quickly open/reload vim
nnoremap <leader>ev :split $MYVIMRC<CR>  
nnoremap <leader>sv :source $MYVIMRC<CR>     
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.