簡體   English   中英

函數來源.vimrc和.gvimrc

[英]Function to source .vimrc and .gvimrc

我通常使用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

可以這樣做嗎? 或者,因為我的.gvimrc只有幾行,我應該把它的內容放到if has("gui_running")塊中嗎?

你已將函數放在.vimrc中的某個位置。 這意味着,當它被執行時, :source .vimrc正在嘗試重新定義它,這是一個問題。 你可以嘗試這樣做:

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

如果已經定義了該函數,則應該跳過重新定義它,避免出現問題。

我會說,無論你在.vimrc中有什么東西搞亂gvim設置都應該被if !has("gui_running")塊所包圍。

autocmd似乎是處理您嘗試執行的操作的最簡單方法:

autocmd BufWritePre .gvimrc,.vimrc source <amatch>

這樣,您可以在保存配置文件時自動重新加載配置文件,而不必亂用函數。 或者,您可以使用映射來觸發:source $MYVIMRC:source $MYGVIMRC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM