【问题标题】:How can i prevent my vim plugins being overridden by older ones?如何防止我的 vim 插件被旧插件覆盖?
【发布时间】:2015-01-10 22:39:57
【问题描述】:

我已经通过自制软件安装了 MacVim,并通过将 Pathogen.vim 文件下载到我的 ~/.vim/autoload 目录来安装病原体。我已将 vim-perl 插件克隆到 ~/.vim/bundle 目录中。

但是,当我打开一个 perl 文件时,它使用 MacVimand 中包含的perl.vim 文件中的语法突出显示不是我下载的插件。这是:scriptnames 的输出。请注意所有 MacVim 提供的插件都在那里,我认为最后列出的 perl 会覆盖我下载的插件:

1: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/vimrc
2: ~/.vimrc
3: ~/.vim/autoload/pathogen.vim
4: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/ftoff.vim
5: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/syntax/syntax.vim
6: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/syntax/synload.vim
7: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/syntax/syncolor.vim
8: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/filetype.vim
9: ~/.vim/bundle/vim-javascript/ftdetect/javascript.vim
10: ~/.vim/bundle/vim-perl/ftdetect/mason-in-html.vim
11: ~/.vim/bundle/vim-perl/ftdetect/perl11.vim
12: ~/.vim/bundle/vim-ruby/ftdetect/ruby.vim
13: ~/.vim/bundle/vim-scala/ftdetect/scala.vim
14: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/menu.vim
15: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/autoload/paste.vim
16: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/ftplugin.vim
17: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/indent.vim
18: ~/.vim/colors/default.vim
19: ~/.vim/bundle/vim-scala/plugin/scala.vim
20: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/plugin/getscriptPlugin.vim
21: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/plugin/gzip.vim
22: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/plugin/matchparen.vim
23: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/plugin/netrwPlugin.vim
24: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/plugin/rrhelper.vim
25: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/plugin/spellfile.vim
26: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/plugin/tarPlugin.vim
27: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/plugin/tohtml.vim
28: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/plugin/vimballPlugin.vim
29: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/plugin/zipPlugin.vim
30: ~/.vim/bundle/vim-scala/after/plugin/help.vim
31: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/gvimrc
32: ~/.vim/bundle/vim-perl/syntax/perl.vim
33: ~/.vim/bundle/vim-perl/syntax/pod.vim
34: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/syntax/pod.vim
35: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/syntax/perl.vim
36: ~/.vim/bundle/vim-perl/ftplugin/perl.vim
37: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/ftplugin/perl.vim
38: ~/.vim/bundle/vim-perl/indent/perl.vim
39: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/Resources/vim/runtime/indent/perl.vim

这是我的~/.vimrc 文件

set shell=/bin/sh

call pathogen#infect()

filetype off
syntax on
filetype plugin indent on

如果我 :so ~/.vim/bundle/vim-perl/syntax/perl.vim 则文件语法正确突出显示。

如何防止 MacVim 捆绑的覆盖?

【问题讨论】:

  • 尝试移动filetype off 上方 call pathogen#infect()
  • 不,没有区别。 :scriptnames中的文件仍然以相同的顺序存在
  • runtimepath 设置为什么?
  • runtimepath=~/.vim,~/.vim/bundle/default,~/.vim/bundle/vim-javascript,~/.vim/bundle/vim-perl,/usr/local/Cellar/macvim/7.4-73_1/MacVim.app/Contents/Resources/vim/vimfiles,/usr/local/Cellar/macvim/7.4-73_1/MacVim.app/Contents/Resources/vim/runtime,/usr/local/Cellar/macvim/7.4-73_1/MacVim.app/Contents/Resources/vim/vimfiles/after,~/.vim/after
  • 看起来我的错 :( 它正在加载语法,但有些被禁用,因为我没有把它放在 after/...

标签: macos vim homebrew macvim pathogen


【解决方案1】:

包含保护 (if exists("b:current_syntax")) 应该防止默认的 Perl 语法脚本产生任何影响(在您的自定义脚本被获取之后)。

作为一种解决方法,您可以将自己的脚本从 ~/.vim/bundle/vim-perl/syntax/perl.vim 移动到 ~/.vim/bundle/vim-perl/after/syntax/perl.vim,或者创建一个 ~/.vim/after/syntax/perl.vim 脚本

so ~/.vim/bundle/vim-perl/syntax/perl.vim

在里面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 2021-02-08
    • 2020-07-23
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    相关资源
    最近更新 更多