有時,使用插件的函數和命令定製vim會大大提高使用vim的效率。我被告知可以通過使用條件設置來完成。例如,如果我想安裝插件時,表格只映射某些鍵,我可以寫類似爲插件中定義的函數和命令定製vimrc
if exists(":Tabularize")
vnoremap ......
endif
到我的〜/ .vimrc文件。
但是因爲vim的啓動順序是在插件之前加載〜/ .vimrc。這些設置只會變成未加載。有沒有解決它的方法?或者我應該如何有效地進行這些條件設置?
有時,使用插件的函數和命令定製vim會大大提高使用vim的效率。我被告知可以通過使用條件設置來完成。例如,如果我想安裝插件時,表格只映射某些鍵,我可以寫類似爲插件中定義的函數和命令定製vimrc
if exists(":Tabularize")
vnoremap ......
endif
到我的〜/ .vimrc文件。
但是因爲vim的啓動順序是在插件之前加載〜/ .vimrc。這些設置只會變成未加載。有沒有解決它的方法?或者我應該如何有效地進行這些條件設置?
剛剛意識到另一種方式,也許更整潔,因爲我可以把所有的腳本放在.vimrc
中,就像使用這種方法的其餘配置一樣(我想讓這個配置文件儘可能便攜)。其背後的想法很簡單,autocmd
爲事件VimEnter
。加載所有插件後,我們可以加載一些腳本。
首先在文件.vimrc
中定義一個函數,並將所有插件特定的行爲放入其中。
function! g:LoadPluginScript()
"Tabular
if exists(":Tabularize")
vnoremap foo
bar
endif
"plugins A
if exists("some_function_or_variable_defined_in_plugin_A")
foo
bar
endif
endfunction
那麼,這個函數後面加一個autocmd
地方稱之爲事件的VimEnter
augroup plugin_specific_script
autocmd!
autocmd VimEnter * call LoadPluginScript()
foo bar
augroup END
就是這樣。進入Vim後,只要負責的插件可用,所有插件特定的腳本都將成功加載。
您可以嘗試
runtime plugin/tabthingy.vim " I don't know the plugin name
如果你的插件是由插件管理器裝載,你有你的插件管理器的配置後,加入這行(和下面的測試)。
否則,IIRC,我看過插件管理器(或者是谷歌的maktaba框架?),它可以在正確加載插件後執行。但我想第一個解決方案應該足夠了。
創建一個名爲~/.vim/after/tabularize.vim
的新文件,並將腳本放入其中。任何以〜/ .vim/after目錄中的.vim結尾的文件都會在加載插件後加載,但在vim實際啓動之前加載。
http://vim.wikia.com/wiki/How_to_initialize_plugins在vim的wiki中找到它。謝謝。 – Chong
只要插件本身沒有在after /子目錄中定義,就會工作。這很少見,但有時會發生。 –