为什么VIM无法检测到我的Coffeescript文件类型?

19

2
你同时安装了插件的ftdetect部分吗?coffee.vim就是执行此操作的一部分,如下所示:autocmd BufNewFile,BufRead *.coffee set filetype=coffee - Cascabel
谢谢!我已经解决了。它被添加为git子模块,所以一切都存在,但是ftdetect没有被加载。问题更多的是为什么它没有被加载,但现在它已经被加载了。谢谢。 - noli
3个回答

21

我明白了...我必须通过设置来强制重新加载文件类型。

filetype off
filetype on

具体而言,我必须在运行后执行这个操作

syntax on

这在 pathogen 的自述文件中有详细解释。

http://www.vim.org/scripts/script.php?script_id=2332


嗯,我不使用pathogen,但那似乎很奇怪。如果你只是将所有这些文件倒入正确的目录中,它就会自动工作,不需要任何vimrc的技巧。 - Cascabel
1
不知道该说什么...这肯定是一些微妙的东西...但我将vim-coffee-script存储库作为子模块,它没有起作用...有了这个更改,它就可以工作了。话虽如此,这可能是我以前的.vimrc配置中从未遇到过的错误。 - noli
1
@Jefromi,我刚从Pathogen转换到Vundle,并看到了这个bug的介绍。使用noli的解决方案为我修复了这个bug。 - Eric Hu
1
@noli兄弟...拯救了我的理智...我差点转向sublime/textmate/其他选择...(开玩笑的)但是说真的...谢谢! - empanacho

11

Noli的解决方案有时对我有效,但在其他时间或针对其他文件类型却会出问题,这让我很生气。

解决方案是将syntax enable移到vimrc的底部。

解释:按照Noli的逻辑,我进一步查看了Github上的pathogen文档,其中一个事情引起了我的注意。

execute pathogen#infect()
syntax on
filetype plugin indent on

在安装插件后,所有东西都会被启用。我注意到在我的vimrc中并非如此,所以我将syntaxfiletype移到了vimrc的底部。问题得到解决(至少目前是这样)。


谢谢,非常有帮助。我必须同时使用你的解决方案和noli的解决方案才能使它工作。具体来说,在“filetype plugin indent on”之前,我必须包括“filetype off”。 - Jack Senechal
对我来说,这是在我切换到 Vundle 后开始发生的。我意识到 syntaxfiletype 行在所有 Bundle 行之前,所以我将它们移到后面,然后事情又开始正常工作了。 - Rufo Sanchez
Eric Hu的解决方案对我也起作用了。我不必把syntax on移到最底下,将其移动到filetype plugin indent on后面的那一行就足够了。 - dmoench

4

我尝试了这里提供的所有解决方案,但都不适用于我。对于我有效的解决方案是将以下代码添加到~/.vimrc文件中。

syntax on
filetype on
au BufNewFile,BufRead *.coffee set filetype=coffee

并且问题已解决。

关于au自动命令的问题 - 事实上,vim-coffee-script应该为您完成此操作 - 不应该有必要添加这个。然而...我发现在:autocmd!行之前将其插入到我的.vimrc中一点用也没有;但是在它之后插入,就可以了!然后干脆把那个:autocmd!行删掉,对我来说也解决了问题 - 我不知道那行代码的作用是什么,但是从删除它到现在,我还没有看到任何负面影响。 - cueedee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接