在Vim中重新加载.vimrc而不重新启动


93

当我向其中写入内容时,这很困扰我.vimrc,我必须先将其关闭然后打开才能应用更改。有没有一种方法可以.vimrc在Vim 中重新加载而不关闭它?

例如,我已经添加set nu~/.vimrc所有行和缓冲区中,并且希望行号出现。

Answers:



18

这是后代。将以下内容添加到您的.vimrc中:

map <leader>vimrc :tabe ~/.vim/.vimrc<cr>
autocmd bufwritepost .vimrc source $MYVIMRC

第一行表示您可以通过键入领导者,然后编写“ vimrc”,从任何vim缓冲区中打开vimrc。例如,我的领导者设置为逗号,因此,如果我处于编辑模式并且键入“,vimrc”,它将在新选项卡中打开我的vimrc。

保存和关闭时,第二行会自动将更改发送到vimrc。这是魔法。


1
理想情况下,您不会map <leader>vimrc :tabe $MYVIMRC<cr>匹配autocmd吗?
尼克·比斯比

对我~/.vimrc来说,@ NickBisby 只是一个存根,~/.vim/.vimrc以便可以将所有内容保持在源代码控制之下。对于大多数人来说,这是正确的:tabe $MYVIMRC<cr>
迪恩

1
另外,您可以使用符号链接到实际的.vimrc文件,而不是将其作为存根。
Spoike '16

如何在不更改光标位置的情况下重新加载vimrc?
SergioAraujo


4
" 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中进行编辑时,才会自动加载。

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.