在vim中支持多种文件类型

37
当我编辑一个PHP文件时,例如默认的文件类型是php。这很有道理,但是当该PHP文件也有HTML时,文件类型仍然只是php。对于一些插件来说,这意味着我可以获取该插件的PHP功能,但错过了HTML功能。更具体地,当我编辑PHP文件时,会出现这种情况,这在我的片段插件中发生。我获取的是PHP片段,而不是HTML片段。
解决此问题的可能方法(显然我不喜欢,因此发布此问题)是:
1.添加一个映射,以在编辑文件的不同部分时在不同的文件类型之间切换。
2.更新我的php片段文件,以包括html片段(虽然这对上面的示例有效,但它并不能解决根本问题)。
那么,在vim中是否有一种同时使用多个文件类型编辑文件的方法?
编辑:为将来参考,我所说的特定插件称为snipMate。 http://www.vim.org/scripts/script.php?script_id=2540

1
(g)VIM中的PHP模式支持在同一个文件中使用四种语言:HTML、JavaScript(虽然不如ft=javascript做得好)、CSS和PHP。它将检测每种语言的边界。该插件是为web程序员编写的。 - amphetamachine
我确实已经成功地让语法高亮在我处理的不同语言的同一文件中按预期工作,但其他插件呢?你是说它们应该已经能够在(g)vim中工作了吗?我不明白这怎么可能。 - chadgh
1
没有完全通用的方法。相关插件必须以与PHP语法文件相同的方式进行重写。它们都是vim脚本;您可以查看语法文件并了解其如何检测边界,然后尝试应用它。但总的来说,这是一个难题,因为插件所做的不仅仅是语法高亮那么简单。 - Cascabel
1个回答

55

您可以指定同时使用多个文件类型。例如:

:setfiletype html.php

但是大多数文件类型插件和语法文件并没有为这种情况设计。 参见::help 'filetype'


2
太好了!对于我主要关注的插件,这个完美地运作了。编辑 PHP 文件时,我输入 :setfiletype html.php.js.css ,然后代码片段插件会包含所有指定文件类型的代码段文件。谢谢! - chadgh
太好了。我对于snipMate也有同样的问题。 - devth
我显然对编程一无所知。谢谢你让它变得更好。 - Tegra Detra
2
你知道如何修复vim中的语言支持吗?例如,我想要set filetype python.yaml能够正确地查看docstrings中的yaml,我需要做什么才能使其正常工作? - Bastian Venthur
我和@BastianVenthur 有同样的疑问 :/ - xeruf

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