[英]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.