我如何知道正在使用哪个语法文件?


50

Vim正在以一种有趣的方式突出显示我的文件的语法,我想知道是哪种语法文件导致了这种行为。如何找出vim加载了哪些语法文件?

Answers:


39

要找出Vim实际加载了哪些文件,请执行

:scriptnames

这很有用。现在,我对此不太确定:如果语法文件显示在此列表中,是否可以保证该语法文件处于“活动”状态?我可以在这里看到很多语法文件。
Edward Z. Yang

7
通常,仅列出的最后一个是“活动的”,如果您关闭了语法高亮显示,则可能没有。要查看当前有效的语法,请执行:echo b:current_syntax。要查看当前有效的语法项目,请按照Ingo建议执行并执行:syntax list。如Ingo所述,如果来自多个语法文件的语法项有效,则后者可能会有所帮助。
garyjohn 2013年

1
在Mac OS XI上修改了/usr/share/vim/vim73/filetype.vim。使用上述命令后,我意识到它正在使用MacVim的版本~/Applications/MacVim.app/Contents/Resources/vim/runtime/filetype.vim。如果安装了MacVim,请确保修改正确的文件。
echamber

1
您可能加载了两个具有相同名称的语法文件。例如,vim附带了ColdFusion的语法突出显示(/usr/share/vim/vim81/syntax/cf.vim对我来说)。我安装了自定义的cf.vim,因为标准版本已过时。 :scriptnames显示两个文件。默认值在脚本列表中较低;但是,正在使用前者。如果你看的话/usr/share/vim/vim81/syntax/cf.vim,那里有个警卫if exists("b:current_syntax") finish endif。因此,对我而言,这scriptnames很有帮助,但我必须更深入地研究。
avejidah

31

当前缓冲区的语法可以通过以下方式查询

:setlocal syntax?

它通常(但不一定)对应于缓冲区的文件类型(:setlocal filetype?)。

为了更深入的了解,

:syntax list

显示所有的语法定义(有些语法(CAN)包括其他语言的语法,比如javahtml针对的JavaDoc注释标记)。


这是我根据OP问题的标题来寻找的内容。OP当然会在描述中阐明他正在寻找实际的语法文件,但我感谢您将其保留在此处,因为它是搜索引擎中的第一个答案。
动词

4

您可以查看当前使用的文件类型以及

:verbose set ft ?

处理文件类型的插件很可能位于

:e $VIMRUNTIME\ftplugin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.