vimrc 會比任何 plugin 都還要先執行,所以如果有什麼工作是想要在 plugin 讀完後才做的,就不能直接寫在 vimrc 裡面,以我的例子,我想要在某些 plugin 有安裝,該 plugin 的命令確實存在的話,才去另外做這些命令的 mapping ,例如:
if exists(":Align")
com! -bang -range -nargs=* A <line1>,<line2>call Align#Align(<bang>0,<q-args>)
endif
這段程式直接放在 vimrc 裡面的話, if 判斷都不會成立,所以我的作法是丟到 function 裡面,然後放到 VimEnter 這個 auto command 的事件執行:
function AfterStart ()
" plugin commands
if exists(":Align")
com! -bang -range -nargs=* A <line1>,<line2>call Align#Align(<bang>0,<q-args>)
endif
endfunction
autocmd VimEnter * :call AfterStart()