是否可以在不重新启动的情况下应用vim配置?

sai*_*int 77 vim

我想.vimrc从Vim 编辑文件并应用它们而不重新启动Vim.

Rao*_*ter 77

是的,只需:so %在编辑.vimrc时使用该命令.

如果希望vim自动重新加载配置,则必须添加以下命令:

augroup myvimrchooks
    au!
    autocmd bufwritepost .vimrc source ~/.vimrc
augroup END
Run Code Online (Sandbox Code Playgroud)

如果您保存几次配置,自动命令的分组就是为了避免"指数"重新加载.


mat*_*pie 45

如果您在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
Run Code Online (Sandbox Code Playgroud)

autocmd监视所有可能的*vimrc文件,当一个文件发生更改时,它会重新加载vimrc文件,gvimrc如果GUI正在运行.

  • 它在GUI Vim启动时设置.见`:help gvimrc` (5认同)
  • 太棒了,谢谢.如果你这样做,避免我刚刚提交的大脑屁...我打开gvim,将其添加到我的vimrc,然后尝试确认它有效.没有... 20分钟后,我意识到我已经忘记了在AUTOCMD添加之后提交的文件.当我做到这一点,当然,一切都有效.我想这对我来说有点太过分了,我有一个精神上的"堆栈溢出". (3认同)
  • 我用过这个,但也检查`$ GVIMRC`是否存在,因为有时它不存在.`if has('gui_running')&& filereadable($ MYGVIMRC)` (3认同)

shi*_*ara 34

获取您的vimrc文件 :source ~/.vimrc


Tom*_*ale 8

" Quickly edit/reload this configuration file
nnoremap gev :e $MYVIMRC<CR>
nnoremap gsv :so $MYVIMRC<CR>
Run Code Online (Sandbox Code Playgroud)

要在保存时自动重新加载,请将以下内容添加到$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
Run Code Online (Sandbox Code Playgroud)

然后最后一次输入:

:so %
Run Code Online (Sandbox Code Playgroud)

下次保存时vimrc,它将自动重新加载.

特征:

  • 告诉用户发生了什么(也记录到:messages)
  • 处理配置文件的各种名称
  • 确保它只匹配实际配置文件(忽略其他目录中的副本或fugitive://diff)
  • 使用时不会产生错误 vim-tiny

当然,只有在编辑你vimrc的vim时才会发生自动重新加载.