如何在不离开Vim的情况下重新加载vimrc?


50

当我进行更改时.vimrc,通常会退出Vim并再次将其打开。有没有更简单的方法来重新加载新.vimrc更改?

Answers:


47

跑:

:source $MYVIMRC

在Vim中重新加载vimrc文件。或者,较短的版本:

:so $MYVIMRC

正如kenorb在评论中提到的。

您可能还会发现将这两种形式中的任何一种映射到键上都是有用的。例如:

nnoremap <Leader>r :source $MYVIMRC<CR>

2
捷径::so $MYVIMRC
kenorb 2015年

@kenorb:我添加了这种可能性;感谢您提到它!
Paul Gessler

:so $m<Tab>←超捷径
亚伦·托马

3
使用保存另外两次击键:so %%设置为您编辑的缓冲区的当前文件名,在这种情况下$MYVIMRC
cbaumhardt

1
到目前为止,最简单的方法是在保存时自动重新加载vimrc-检查其他答案。
汤姆·黑尔

20

如果您只想偶尔重新加载文件

:source $MYVIMRC

保罗写的是正确的。如果您最终经常更改vimrc,则可以在vimrc文件中添加以下内容:

autocmd BufWritePost .vimrc,_vimrc source $MYVIMRC

写入文件时(在该vim会话中),这将重新加载文件


1
johannes:我们是否需要通过vim编辑.vimrc才能使该命令自动获取文件?
Sai Manoj Kumar Yadlapati 2015年

5
请注意,vimrc文件也可以称为其他名称:例如vimrc(如果在〜/ .vim中)。
user50136'2

1
@SaiManojKumarYadlapati是的,AS表示这必须是相同的vom会话。BufWritePost里被触发时VOM不写
约翰内斯

问题:(1)不适用于.vim/vimrc,(2)将创建重复的autocmds,因此每次后续保存都将变慢,因为文件将被多次加载,(3)在vim-tiny中不起作用具有autocmd,并且在某些Linux发行版中仍然是默认值。请参阅我的答案以解决这些问题。
汤姆·黑尔

2
" 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.