2014-07-03 27 views
0

有時,使用插件的函數和命令定製vim會大大提高使用vim的效率。我被告知可以通過使用條件設置來完成。例如,如果我想安裝插件時,表格只映射某些鍵,我可以寫類似爲插件中定義的函數和命令定製vimrc

if exists(":Tabularize") 
    vnoremap ...... 
endif 

到我的〜/ .vimrc文件。

但是因爲vim的啓動順序是在插件之前加載〜/ .vimrc。這些設置只會變成未加載。有沒有解決它的方法?或者我應該如何有效地進行這些條件設置?

回答

0

剛剛意識到另一種方式,也許更整潔,因爲我可以把所有的腳本放在.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後,只要負責的插件可用,所有插件特定的腳本都將成功加載。

2

您可以嘗試

runtime plugin/tabthingy.vim " I don't know the plugin name 

如果你的插件是由插件管理器裝載,你有你的插件管理器的配置後,加入這行(和下面的測試)。

否則,IIRC,我看過插件管理器(或者是谷歌的maktaba框架?),它可以在正確加載插件後執行。但我想第一個解決方案應該足夠了。

3

創建一個名爲~/.vim/after/tabularize.vim的新文件,並將腳本放入其中。任何以〜/ .vim/after目錄中的.vim結尾的文件都會在加載插件後加載,但在vim實際啓動之前加載。

+0

http://vim.wikia.com/wiki/How_to_initialize_plugins在vim的wiki中找到它。謝謝。 – Chong

+0

只要插件本身沒有在after /子目錄中定義,就會工作。這很少見,但有時會發生。 –