有时,使用插件定制vim'函数和命令大大提高了使用vim的效率。我被告知可以通过使用条件设置来完成。例如,如果我想仅在安装插件表格时映射某些键,我可以编写类似
的内容if exists(":Tabularize")
vnoremap ......
endif
进入我的〜/ .vimrc文件。
但是因为vim的启动顺序是在插件之前加载〜/ .vimrc。这些设置只会导致未加载。它有解决方法吗?或者我应该如何有效地进行这些条件设置?
答案 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
中,就像配置的其余部分一样(我希望尽可能使此配置文件尽可能便携)。背后的想法很简单,事件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后成功加载。