无法在Vim中自动设置语法突出显示

时间:2009-06-26 22:03:29

标签: vim syntax

我的.vimrc

中有以下内容
syntax on
filetype plugin indent on       # Thanks to Jeremy

我跑

vim ~/.vimrc

我得到了正确的语法突出显示。

我在.vimrc中提供了很多文件。我的.vimrc对我来说就像是一个路线图,我在

中导航
CTRL-W f

当我导航到我采购的文件时出现问题:无颜色

我的所有源文件在其PATH中都包含单词Vim。 有可能在解决问题时使用这一事实。

如何为源文件自动提供语法高亮显示?

5 个答案:

答案 0 :(得分:11)

有问题的文件是否以“.vim”结尾?如果没有,那么vim的文件类型检测可能无法确定这些文件包含vim-script。您可以重命名文件以使它们以.vim结尾,也可以添加自动命令以适当地设置文件类型。

要执行后者,您可以将以下内容添加到.vimrc:

au! BufNewFile,BufRead PATTERN set filetype=vim

将“PATTERN”替换为与相关文件匹配的文件模式。

修改

请参阅:help autocmd-patterns了解模式的工作原理:

The file pattern {pat} is tested for a match against the file name in one of
two ways:
1. When there is no '/' in the pattern, Vim checks for a match against only
   the tail part of the file name (without its leading directory path).
2. When there is a '/' in the pattern,  Vim checks for a match against the
   both short file name (as you typed it) and the full file name (after
   expanding it to a full path and resolving symbolic links).

特别注意这个例子:

Note:  To match part of a path, but not from the root directory, use a '*' as
the first character.  Example: >
    :autocmd BufRead */doc/*.txt    set tw=78
This autocommand will for example be executed for "/tmp/doc/xx.txt" and
"/usr/home/piet/doc/yy.txt".  The number of directories does not matter here.

在您的情况下,您可能需要以下内容:

au! BufNewFile,BufRead */Vim/* set filetype=vim

答案 1 :(得分:3)

为了让vi认为我的jQuery( .jq)文件实际上是javascript( .js)我做了: -

创建和/或编辑您的vimrc文件...

e@dev3:~$ vi ~/.vimrc

添加以下文字(按i插入)...

if has("syntax")
  syntax on
  filetype on
  au BufNewFile,BufRead *.jq set filetype=javascript
endif

保存vimrc文件......

[esc]:wq[enter]

此外,要查找支持的文件类型,请查看filetype.vim ...

e@dev3:~$ sudo locate filetype.vim
/usr/share/vim/vim72/filetype.vim
e@dev3:~$ sudo grep "\.js[, ]" `locate filetype.vim`
au BufNewFile,BufRead *.js,*.javascript,*.es,*.jsx      setf javascript

...文件类型是setf arg ...

e@dev3:~$ sudo grep "\.js[, ]" `locate filetype.vim` | cut -d " " -f 4
javascript

玩得开心。

答案 2 :(得分:1)

您提供的文件的扩展名是什么?扩展是Vim检测突出显示它的语法的常用方法,对于源代码文件(vimscript),它应该是.vim。如果您只看到源文件的问题,而不是其他任何文件的问题,那听起来并非如此。

答案 3 :(得分:0)

一个显而易见的问题是,您所采购的文件中没有说“语法关闭”的行吗?

答案 4 :(得分:0)

可能是:

  • “filetype”选项
  • vim
  • 可能无法自动检测到文件类型

filetype on对第一个进行排序,第二个可以使用基于文件扩展名的autocmds进行修复。