我和合伙人正在维护维密,一个 Vim 配置项目,使用文德尔。
随着时间的推移,我们尝试为越来越多的语言提出最佳配置,配置文件也在不断增长。
我们有包管理(阅读更多) 允许您只安装那些对您关心的内容有作用的捆绑包。
就像我的公司一样,有很多精通多种语言的程序员。我们开始思考有什么更好的方法可以让 Vim 运行得更快,即使我需要支持多种语言,因为我懂很多语言。
因此,我们开始说:如果我们可以根据文件扩展名动态加载插件会怎样?
我们知道,默认情况下,Vim 会根据文件扩展名(例如语法)更改其配置。我们开始弄清楚我们也可以使用,autocmd
但一两个小时后,我还是没能找到如何做到这一点。
有人有想法吗?或者真的有可能吗?
答案1
特定语言的插件应位于ftplugin/
子目录中,并仅为当前缓冲区定义其功能。这样,它们仅在该缓冲区被加载时才会被加载文件类型进行了编辑,并且你的 Vim 启动保持精简和快速。
通用插件(即适用于所有类型缓冲区的东西)由用户安装;使用类似插件管理器文德尔,这归结为您的一行~/.vimrc
和一个命令;我认为没有比这更简单的了。
随着自动加载Vim 7 中引入的机制,插件只需要在 中定义其自动命令、映射和命令plugin/<name>.vim
,然后实际的长期实现将在首次使用时按需获取。这是您降低 Vim 启动成本的最佳盟友。
无需发明另一种复杂的包管理方案(其新约定不可避免地会让用户感到困惑;请参阅有关发行版的许多问题,例如SPF-13和雅努斯),一致使用现有方案应该能够使 Vim 的启动和膨胀不再成为问题,并且它将使所有插件用户受益,而不仅仅是那些转向你的方案的用户。
Vim“发行版”以快速安装和开箱即用的设置吸引您,但您付出的代价是复杂性增加(您需要了解 Vim 的运行时加载方案和发行版的任意约定)和不灵活性(发行版可能会使某些事情变得更容易,但其他事情却非常困难)。Vim 具有极高的可定制性,使用其他人的定制毫无意义。