2011-10-10 34 views
3

我已经安装了vundle来处理MacVim中的包。它正确设置了我所有其他文件的文件类型,例如ruby,perl等。为什么VimClojure没有将filetype设置为“clojure”

但是,打开.clj文件时不会设置文件类型。当我运行:set filetype?时,它返回空。所以,vim不识别clojure文件。我可以:set filetype=clojure并立即获得代码完成和语法突出显示;所以我知道VimClojure工作正常。

什么是“调试”或找出问题出在哪里的最佳方式?

  • 的MacVim 7.3版
  • OS X 10.6

谢谢!

UPDATE

我已经有filetype plugin indent on和它的工作对其他包(VIM-红宝石,VIM护栏等)vundle是管理。只是不VimClojure。

+0

的哪个工作插件安装新的后缀文件类型映射?我仍然不相信'filetype on'调用是按照Bundle定义的正确顺序发生的。 (即在“Bundle”调用之后) – kotarak

回答

0

VimClojure安装文件ftdetect/clojure.vim。我的怀疑是,这不是Vim拾起来的。不知道vundle,所以我无法帮助。如果vundle在.vimrc需要一些初始化,你应该检查它发生在filetype的东西之前。

+0

是的,'ftdetect/clojure.vim'就在那里。我已经正确地获得了我的'vimrc'调用vundle,它正在为其他vim包工作。 –

4

为了使您可能需要在您的.vimrc添加此载入文件类型插件:

filetype plugin on

+0

我已经有'filetype plugin indent on',它可以用于vundle管理的其他包。只是不VimClojure。 –

+0

但是您是否在'.vimrc'中设置了'filetype plugin indent on',或者稍后通过某些脚本设置了它?如果没有在'.vimrc'中设置,那么可能是设置得太晚,然后尝试将它放在.vimrc中。 –

+0

我有一个有趣的方式来为'.vimrc'分隔我的dotfiles文件。你可以在这里看看它们:https://github.com/bostonaholic/vim-config。基本上,'.vimrc'调用'runtime! common_config/*。vim *'在vim启动时加载所有vim文件。在那里,是的,我正在调用'filetype plugin indent on'。 –

0

我有同样的problem on Ubuntu。这是由系统级vim设置引起的。

你可以通过:scriptnames应用什么系统级别的vim设置。如果你在vim里运行redir @c | scriptnames | redir END | enew | put c,你会得到一个包含vim所有脚本的缓冲区。如果忽略所有文件(:g/\~/d),则可以看到所有系统级脚本。

我的问题是在第一个文件:/usr/share/vim/vimrc

" Vim5 and later versions support syntax highlighting. Uncommenting the next 
" line enables syntax highlighting by default. 
if has("syntax") 
    syntax on 
endif 

由于出现syntax on之前pathogen(我vim的插件管理器)是安装程序,VIM从不看在束/ vimclojure/ftdetect目录。我认为vundle会对你有同样的问题。 (请尝试复制ftdetect/clojure.vim到〜/ vim的/ ftdetect/clojure.vim,看看您是否仍然有问题)

如果你有同样的问题,你有三个可能的解决方案:

  1. 注释掉这些行,并向拥有有问题文件(Apple或MacVim)的任何人提出错误。我猜你的文件在MacVim包中,因为我不记得MacVim正在做系统级的更改。
  2. 在初始化vundle之前添加filetype off(您也可能需要syntax off)。病原体使用病原体#感染()来做到这一点,也许vundle有类似的东西。 (相应的病原体bugfix。)请确保您将它们重新打开!(另外,请确保你的vundle安装程序在vimrc中与filetype/plugin/syntax相关的其他任何东西之前出现)。
  3. 从ftdetect文件中为所有软件包创建符号链接到〜/ .vim/ftdetect(并且如果bug是固定的)。
3

确保您在vimrc中初始化Vundle和您的软件包之前您的其余配置。因此,例如,您应该有:

" ======================================================================= 
" Vundle setup and initialization. This needs to be done before any 
" configuration so all plugins are loaded. 

set nocompatible     " required for Vundle 
filetype off      " required for Vundle, enabled later. 

set rtp+=~/.vim/bundle/vundle/ 
call vundle#rc() 
Bundle 'gmarik/vundle' 

" Powerline 
Bundle 'Lokaltog/vim-powerline' 
... 

...其中Powerline仅仅是一个示例包。然后让你的配置休息...

" ======================================================================= 
" Actual vim configuration goes here. 
" ======================================================================= 

syntax on       "lots of syntax highlighting 
set nocompatible     "be iMproved 
colorscheme mustang 
filetype plugin indent on 
... 

希望帮助...

+0

太棒了,这对我来说很好。我希望vundle文档更清楚这个主要问题。 – CornSmith

0

确保您的文件扩展名是.clj,不.clojure也不.cloj

相关问题