繁体   English   中英

为插件中定义的功能和命令定制vimrc

[英]customizing vimrc for functions and commands defined in plugins

有时,利用插件的功能和命令来自定义vim可以大大提高使用vim的效率。 有人告诉我可以通过使用条件设置来完成。 例如,如果仅在安装插件表格时才想映射某些键,则可以编写如下内容

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

到我的〜/ .vimrc文件中。

但是因为vim的开始顺序是在插件之前加载〜/ .vimrc。 这些设置只会导致未加载。 有没有解决的办法? 还是应该有效地进行这些条件设置?

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

你可以试试

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

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

否则,IIRC,我已经看到插件管理器(或者是Google的maktaba框架?),它们可以在正确加载插件后执行某些操作。 但是我想第一个解决方案就足够了。

刚刚意识到另一种方式,也许更简洁了,因为我可以使用此方法将所有脚本像其余配置一样放在.vimrc (我想使此配置文件尽可能可移植)。 它的想法很简单,对事件VimEnter使用autocmd 所有插件加载完毕后,我们可以加载一些脚本。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM