函数来源.vimrc和.gvimrc

Dan*_*iel 5 vim

我通常使用GVim,但我的大多数配置都是通过.vimrc(如keymappings)完成的,因为我想在vim gvim中使用它们.因此,当我编辑我的vimrc然后从gvim中获取它时,我必须在此之后获取我的.gvimrc以便恢复我的colorscheme(因为它只是gvim).我尝试编写一个函数来执行此操作,并遇到以下注释中描述的问题:

function ReloadConfigs()
    :source ~/.vimrc
    if has("gui_running")
        :source ~/.gvimrc
    endif
endfunction
command! Recfg call ReloadConfigs()
" error: function already exists, add ! to replace it

function! ReloadConfigs()
    :source ~/.vimrc
    if has("gui_running")
        :source ~/.gvimrc
    endif
endfunction
command! Recfg call ReloadConfigs()
" error: cannot replace function, it is in use
Run Code Online (Sandbox Code Playgroud)

可以这样做吗?或者,因为我的.gvimrc只有几行,我应该把它的内容放到一个if has("gui_running")块中吗?

And*_*dev 14

你已将函数放在.vimrc中的某个位置.这意味着,在它被执行时,它:source .vimrc正试图重新定义它,这是一个问题.你可以尝试这样做:

if !exists("*ReloadConfigs")
  function ReloadConfigs()
      :source ~/.vimrc
      if has("gui_running")
          :source ~/.gvimrc
      endif
  endfunction
  command! Recfg call ReloadConfigs()
endif
Run Code Online (Sandbox Code Playgroud)

如果已经定义了该函数,则应该跳过重新定义它,避免出现问题.