Vimrc命令排序

时间:2014-12-09 16:49:50

标签: initialization vim

我对排序和加载vimrc命令感到好奇。我一直在搜索vim文档几天,试图找到并回答,还没有找到我正在寻找的东西。我找到的最相关的页面是:

  • :h initialization
  • :h vimrc-intro
  • :h $VIM
  • :h $VIMRUNTIME
  • :h after-directory

更明确一点:
显然,vimrc文件的行按执行vim时在vimrc文件中出现的顺序依次执行和评估,但在某些情况下,对于我来说,设置与应该发生的顺序之间的关系是不太明显的在(或者即使它很重要)。我无法在用户手册中找到有关此内容的附加信息页面。有没有我错过的?

我希望这里可能有适用的一般规则,但正如我所想的那样,我认为答案更可能是逐案处理的。

在某些情况下,vimrc命令排序的含义非常明显:

  • 在初始化runtimepath管理器之前,必须禁用文件类型检测。
  • 必须在注册包之前初始化运行时路径管理器。
  • 插件通常提供默认设置,因此在 注册后设置会更安全。加载。

但是在很多情况下,我不明白vimrc命令的排序是否重要,以及它可能有什么影响:

  • 通常的做法是在插件管理器完成注册插件之后和任何其他命令出现之前直接设置filetype plugin indent on,但这是必要的吗?
    • 我能想到的一个例子,但不确定,是自动命令设置文件类型特定设置。如果在启用文件类型检测,文件类型插件和文件类型缩进之前创建这些自动命令会发生什么?我想这与vim内部处理指针的方式有关,但同样,我真的没有任何线索。
  • scriptencoding utf-8指定当前脚本的字符编码,我通常会在脚本开头看到这个。我没有在usermanual中看到任何指定此命令的位置是否重要或者它可能具有什么影响的信息。
  • :h initialization指定在启动时,vim要做的第一件事就是检查$SHELL&的值。 $TERM并设置相应的vim术语& shell变量。我通常把我的编码和放大器终端设置直接在我的filetype plugin indent on之后,因为我看到其他人这样做了,而且似乎可能会影响其他设置,但老实说,我没有任何线索,我找不到文档揭开光明。
  • backupbackupdir等设置。订单似乎不重要 - 我可以设置backupdir,如果未设置backup,则忽略设置。我可以在设置backupdir值之前或之后启用backup,并且按预期工作。我不确定这是否是解决更大问题的相关信息。

总结

  • 是否有一般规则来确定命令应该出现在vimrc文件中的顺序?有没有在vim用户手册中找不到的关于这个主题的文档?
  • 如果没有一般规则,是否有更具体的规则&你知道的例子吗?
  • 您是否有任何调试/故障排除/测试步骤来解决这些问题?

谢谢!

1 个答案:

答案 0 :(得分:4)

  

插件通常提供默认设置,因此在注册后配置设置会更安全。加载。

~/.vimrc之后,插件来源。只要Vim在相应的插件来源之前看到它们,从技术的角度来看,放置let g:plugin_option = 1行的位置并不重要。

  

通常的做法是在插件管理器完成注册插件之后,在出现任何其他命令之前直接设置filetype plugin indent on,但这是必要的吗?

该练习的全部内容仅是激活文件类型检测和特定于文件类型的插件和缩进脚本。它通常在顶部附近完成,因为它是一个基本且非常有用的设置。它只是被插件管理器的东西推倒了,不多也不少。

  

如果在启用文件类型检测,文件类型插件和文件类型缩进之前创建这些自动命令会发生什么?

autocommand是一个被动事件监听器:没有事件,没有执行。您可以在文件类型检测之前或之后定义它,它并不重要。

  

scriptencoding utf-8指定当前脚本的字符编码,我通常会在脚本开头看到这个。我没有在用户手册中看到任何信息,指明此命令的位置是否重要或可能产生的影响。

在执行该命令之前,脚本使用默认编码获取,执行该命令后,将使用新编码执行脚本的其余部分。越早越好。

  

:h initialization指定在启动时,vim要做的第一件事就是检查$SHELL&的值。 $TERM并设置相应的vim术语& shell变量。我通常把我的编码和放大器终端设置直接在我的filetype plugin indent on之后,因为我已经看到其他人这样做了,好像它可能影响其他设置,但说实话,我没有任何线索,我无法找到文档光明。

set shell…通常很有用,但没有任何理由重新定义TERM ~/.vimrc'shell'。在shell init文件中或直接在终端模拟器中执行此操作。 'term'和{{1}}都不会对其他Vim选项产生任何影响。

  

备份和backupdir等设置。订单似乎并不重要 - 我可以设置backupdir,如果没有设置备份,则忽略设置。我可以在设置backupdir值之前或之后启用备份,并且按预期工作。我不确定是否有相关信息可以找出更大的问题。

是的,期权的顺序通常并不重要。

  

是否有一般规则来确定命令应该出现在vimrc文件中的顺序?有没有在vim用户手册中找不到的关于这个主题的文档?

AFAIK没有一般规则。每个选项/命令的细节通常在文档中清楚地解释,你应该使用常识:

  • 在调用之前发出一个函数/命令
  • 将相关的线组合在一起
  • 仅使用longform选项/命令名称