【问题标题】:Why does Pathogen "magically" solve Vim syntax highlighting problems?为什么 Pathogen “神奇地”解决了 Vim 语法高亮问题?
【发布时间】:2013-10-11 05:36:04
【问题描述】:

我的.vimrc 中有这 3 行。

" keeping pathogen only for its 'syntax on' bug workaround
Bundle "tpope/vim-pathogen"
execute pathogen#infect()

我现在一定已经删除并重新添加了这 3 行大约十几次。我使用的是最新版本的 Vim,但由于某些原因,某些语法突出显示无法正常工作。

在 MacOS 上,Go 语法高亮不起作用,而在 Arch Linux 上是。但是在 Arch 上,coffeescript 没有突出显示。出于某种原因,执行pathogen#infect() 可以解决两个平台上的所有问题。

这对我来说有点像黑魔法,所以我想知道为什么会这样。有没有更好的方法来解决这个问题?

答案: 我查看了我的 vimrc,发现了错误。我有这条线

filetype plugin indent on

before Bundle,它应该是 after Bundle。

【问题讨论】:

  • 这些的语法文件在哪里(在什么目录下)?
  • 我使用 Vundler 来安装它们。例如:捆绑“kchmck/vim-coffee-script”。所以文件然后在 ~/.vim/bundle/vim-coffee-script/ (ftplugin, syntax, etc...)
  • 检查:scriptnames 输出何时工作和何时不工作。我怀疑某些语法文件没有加载,当它不工作时
  • 谢谢。在这两种情况下,都会加载语法文件,但如果没有 pathpath#infect(),则无法识别文件类型。当没有启动病原体时,似乎没有加载插件的 /ftdetect 文件夹。
  • 这三行不是解决方案:问题出在插件管理器(“Vundle”,而不是“Vundler”)或语法脚本中。请向我们展示您的 ~/.vimrc 的其余部分。

标签: vim


【解决方案1】:

默认情况下,Vim 在启动时不查找 .vim/bundle 目录。所以这意味着你的“ftdetect”不会被加载。

Pathogen 查看每个包目录并加载它们。

如果你想亲眼看看,启动 Vim 两次,一次带pathogen:infect(),一次不带pathogen:infect(),然后在启动后输入:scriptnames。您将看到已加载脚本的列表。

您甚至可以在调用 :scriptnames 之前执行 :redir 将输出写入文件以获取加载脚本的确切差异。

【讨论】:

  • 如果他正在使用 Vundle 并且它不支持 ftdetect,那么他必须找到另一个插件管理器或向其作者提交问题。
猜你喜欢
  • 2012-08-16
  • 1970-01-01
  • 1970-01-01
  • 2014-11-14
  • 2011-06-10
  • 1970-01-01
  • 2011-01-19
  • 2015-08-08
  • 2014-02-18
相关资源
最近更新 更多