操作系统:CentOS 5.7
我正在尝试使gVim/Vim对一种新文件类型进行语法高亮。到目前为止,我已经完成了以下步骤:
- 在
~/.vim/ftdetect/
目录下创建了一个名为foo.vim
的语法文件。 - 使用Vim可以自动检测到新的文件类型并启用语法高亮。
$ vim myfile.foo
- 但是gVim没有语法高亮。
我尝试将以下这行代码添加到~/.gvimrc
文件中:
au BufRead,BufNewFile *.foo set filetype=foo
但是看起来gVim根本没有加载
~/.vim/ftdetect/foo.vim
。我该如何配置gVim?
- 将
foo.vim
移动到~/.vim/syntax/
对于Vim/gVim都不起作用。它们无法自动检测~/.vim/syntax
文件夹。 - 以下是脚本名称列表(加号表示gVim加载的额外文件),gVim确实加载了foo.vim,但不确定如何找出覆盖foo.vim设置的内容。因为在gVim中使用
:set syntax=foo
也行不通。 :au BufRead,BufNewFile *.foo
对于vim/gVim都没有检测规则。所以vim就神奇地工作了...- 这是语法规则。规则文件中的版本检查是否导致gVim无法识别*.foo文件?
[vim:scriptnames]
1: /etc/vimrc
2: /usr/share/vim/vim70/syntax/syntax.vim
3: /usr/share/vim/vim70/syntax/synload.vim
4: /usr/share/vim/vim70/syntax/syncolor.vim
5: /usr/share/vim/vim70/filetype.vim
6: /home/myusername/.vim/ftdetect/foo.vim
7: /home/myusername/.vimrc
8: /usr/share/vim/vim70/plugin/getscript.vim
9: /usr/share/vim/vim70/plugin/gzip.vim
10: /usr/share/vim/vim70/plugin/matchparen.vim
11: /usr/share/vim/vim70/plugin/netrwPlugin.vim
12: /usr/share/vim/vim70/plugin/rrhelper.vim
13: /usr/share/vim/vim70/plugin/spellfile.vim
14: /usr/share/vim/vim70/plugin/tarPlugin.vim
15: /usr/share/vim/vim70/plugin/tohtml.vim
16: /usr/share/vim/vim70/plugin/vimballPlugin.vim
17: /usr/share/vim/vim70/plugin/zipPlugin.vim
18: /usr/share/vim/vim70/scripts.vim
[GVIM :scriptnames]
1: /etc/vimrc
2: /usr/share/vim/vim70/syntax/syntax.vim
3: /usr/share/vim/vim70/syntax/synload.vim
4: /usr/share/vim/vim70/syntax/syncolor.vim
5: /usr/share/vim/vim70/filetype.vim
6: /home/myusername/.vim/ftdetect/foo.vim
+ 7: /usr/share/vim/vim70/menu.vim
+ 8: /usr/share/vim/vim70/autoload/paste.vim
9: /home/myusername/.vimrc
10: /usr/share/vim/vim70/plugin/getscript.vim
11: /usr/share/vim/vim70/plugin/gzip.vim
12: /usr/share/vim/vim70/plugin/matchparen.vim
13: /usr/share/vim/vim70/plugin/netrwPlugin.vim
14: /usr/share/vim/vim70/plugin/rrhelper.vim
15: /usr/share/vim/vim70/plugin/spellfile.vim
16: /usr/share/vim/vim70/plugin/tarPlugin.vim
17: /usr/share/vim/vim70/plugin/tohtml.vim
18: /usr/share/vim/vim70/plugin/vimballPlugin.vim
19: /usr/share/vim/vim70/plugin/zipPlugin.vim
+ 20: /home/myusername/.gvimrc
+ 21: /usr/share/vim/vim70/colors/torte.vim
22: /usr/share/vim/vim70/scripts.vim
~/.vim/syntax/
目录下。 - keltar~/.vim/ftdetect
吗?这个目录是用于自动命令 (au
) 规则的,而不是语法文件本身。把它放进语法文件夹里,然后使用带.foo
文件的 gvim 并输入:echo b:current_syntax
。如果它抱怨未知变量,请键入:setf foo
然后再次 echo。 - keltar:au BufRead,BufNewFile *.foo
,vim/gvim 可以自动检测 foo 文件并正确地进行语法高亮!谢谢! - Stan