我希望能够在Vim中编辑.vimrc
文件并且不需要重新启动Vim就能应用更改。
是的,在编辑你的 .vimrc 文件时,只需使用 :so %
命令即可。
如果你想让 vim 自动重新加载你的配置,你必须添加以下命令:
augroup myvimrchooks
au!
autocmd bufwritepost .vimrc source $MYVIMRC
augroup END
在这里对自动命令进行分组是为了避免在保存配置多次时出现“指数级”的重新加载。
如果你在 Mac/Windows/Linux 平台上运行,并且使用 gvimrc
,下面是一个更加跨平台兼容的版本:
augroup myvimrc
au!
au BufWritePost .vimrc,_vimrc,vimrc,.gvimrc,_gvimrc,gvimrc so $MYVIMRC | if has('gui_running') | so $MYGVIMRC | endif
augroup END
autocmd 监视所有潜在的 *vimrc
文件,当其中一个更改时,它会重新加载 vimrc
文件,然后再加载 gvimrc
(如果 GUI 正在运行)。
:help gvimrc
。 - matpie$GVIMRC
是否存在,因为有时它不存在。if has('gui_running') && filereadable($MYGVIMRC)
- k107au BufWritePost $MYVIMRC
或 au BufWritePost $MYVIMRC,$MYGVIMRC
? - phs加载您的vim配置文件 :source ~/.vimrc
" 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
才会自动重新加载。$MYVIMRC
的同一实例中打开时,它似乎才能工作。如果它们在不同的终端中,例如,那么我仍然必须手动来源 $MYVIMRC
。有没有办法解决这个问题? - Zoey Hewllvim
写出文件时触发的。也许可以监控文件本身的 mtime,但不确定如何在异步轮询时实现。 - Tom Haleautocmd! bufwritepost _vimrc source %
这将在保存时自动重新加载 _vimrc 文件中的所有配置。
gvimrc
或者如果您的文件名为_vimrc
或vimrc
,或者如果您编辑了另一个目录中名为.vimrc
的文件。请查看我的答案以解决这些问题。 - Tom Haleautocmd!bufwritepost.vimrc source ~/.vimrc
?即使出于某种原因需要该组,如果将第3行重写为以“autocmd!”开头,那么第2行是否可以省略? - John Karahalis