我想.vimrc
从Vim编辑文件并应用它们而不重启Vim。
Answers:
是的,只需:so %
在编辑.vimrc时使用命令。
如果要让vim自动重载配置,则必须添加以下命令:
augroup myvimrchooks
au!
autocmd bufwritepost .vimrc source $MYVIMRC
augroup END
如果您保存了多次配置,此处的自动命令分组可以避免“指数”重载。
Function Inc already exist, add ! to replace it
。
autocmd! bufwritepost .vimrc source ~/.vimrc
吗?即使出于某种原因需要该组,如果将第3行改写为从第2行起,也不能省略第2行autocmd!
吗?
如果您在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
$GVIMRC
存在,因为有时不存在。 if has('gui_running') && filereadable($MYGVIMRC)
au BufWritePost $MYVIMRC
还是au BufWritePost $MYVIMRC,$MYGVIMRC
?
" 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中进行编辑时,才会自动加载。
vim
在我正在编辑的同一实例中打开时,这才似乎起作用$MYVIMRC
。例如,如果他们在另一个终端中,那么我仍然必须手动获取$MYVIMRC
。有办法解决这个问题吗?
vim
写出文件时捕获来实现。可能可以在文件本身上监视mtime,但是不确定如何在不异步轮询的情况下执行该操作。
gvimrc
或者如果您的文件名为_vimrc
或vimrc
,或者您编辑了.vimrc
另一个目录中的文件,则无法使用。请参阅我的答案以解决这些问题。