您可以编辑.vimrc
文件并重新加载它而不必重新启动 Vim 吗?
答案1
如果你正在编辑它,你可以使用以下命令重新加载它:
:so %
%
代表当前文件名(参见:h current-file
),:so
是的缩写:source
,它读取指定文件的内容并将其视为 Vim 代码。
一般来说,要重新加载当前活动的 .vimrc,请使用以下命令(参见每日活力):
:so $MYVIMRC
答案2
更好的是,您可以配置 Vim 来监视您的更改.vimrc
并自动重新加载配置。
augroup myvimrc
au!
au BufWritePost .vimrc,_vimrc,vimrc,.gvimrc,_gvimrc,gvimrc so $MYVIMRC | if has('gui_running') | so $MYGVIMRC | endif
augroup END
来源:这个答案
注意:此特殊方法监视 Vim 配置文件名的多种变化,以便它与 GUI Vim、Windows Vim 等兼容。
答案3
按键映射
" 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
在 vim 中编辑时才会发生自动重新加载。
答案4
我有一个略有不同的 ReloadVimrcFunction 版本
" Reloads vimrc after saving it but keep cursor position
if !exists('*ReloadVimrcFunction')
function! ReloadVimrcFunction()
let save_cursor = getcurpos()
source $MYVIMRC | windo redraw
call setpos('.', save_cursor)
echom "Reloaded $MYVIMRC"
endfunction
endif
noremap <silent> <Leader>v :drop $MYVIMRC<cr>
command! -nargs=0 ReloadVimrc :call ReloadVimrcFunction()
nnoremap <silent> <C-s> :call ReloadVimrcFunction()<CR>
为了避免两次加载该函数我们设置:
if !exists('*ReloadVimrcFunction')
我们还保存了光标位置,因为每次重新加载时光标位置都会改变,这很烦人$MYVIMRC
。
我还有一个 augroup,每次保存 $MYVIMRC 时都会触发此功能
augroup Reload
autocmd!
autocmd BufWritePost $MYVIMRC call ReloadVimrcFunction()
augroup END