为插件中定义的函数和命令定制vimrc

时间:2014-07-03 17:04:02

标签: vim plugins

有时,使用插件定制vim'函数和命令大大提高了使用vim的效率。我被告知可以通过使用条件设置来完成。例如,如果我想仅在安装插件表格时映射某些键,我可以编写类似

的内容
if exists(":Tabularize")
    vnoremap ......
endif

进入我的〜/ .vimrc文件。

但是因为vim的启动顺序是在插件之前加载〜/ .vimrc。这些设置只会导致未加载。它有解决方法吗?或者我应该如何有效地进行这些条件设置?

3 个答案:

答案 0 :(得分:3)

创建一个名为~/.vim/after/tabularize.vim的新文件并将您的脚本放入其中。在加载插件后,但在vim实际启动之前加载〜/ .vim / after目录中以.vim结尾的所有文件。

答案 1 :(得分:2)

你可以尝试

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

如果您的插件是由插件管理器加载的,那么在配置插件管理器之后,您必须添加此行(以及以下测试)。

否则,IIRC,我看过插件管理器(或谷歌的maktaba框架?),它可以在正确加载插件后执行。但我想第一个解决方案就足够了。

答案 2 :(得分:0)

刚刚意识到另一种方式,也许更整洁,因为我可以使用此方法将所有脚本放在.vimrc中,就像配置的其余部分一样(我希望尽可能使此配置文件尽可能便携)。背后的想法很简单,事件autocmdVimEnter。我们可以在加载所有插件后加载一些脚本。

首先在文件.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后成功加载。