在vim中的javascript字符串中突出显示HTML语法

Shr*_*rat 5 html javascript vim syntax-highlighting vim-syntax-highlighting

我不知道这是否可行/合理,但我很想知道我是否可以在javascript文件中使用html突出显示我的字符串.我发现php中的字符串可能有SQL语法高亮,所以我相信它是可能的.

但是,我不知道vim脚本,所以对此的任何帮助表示赞赏.

我正在使用Better Javascript语法.

PS:如果在编辑js文件时可以选择打开和关闭它,那就太棒了

谢谢

hob*_*bbs 4

是的,如果您不介意一些语法文件黑客攻击,这是可能的。首先,您需要在 Javascript 语法文件中包含 HTML 语法文件 —— 请参阅:help syn-include参考资料 获取相关信息;其次,您需要声明 HTML 语法可以在某些元素(即字符串)内部找到。第三,如果您想要启用和禁用它的选项,您可以使这些命令依赖于全局变量,并编写一些设置或取消设置该变量的映射,然后重新加载语法文件。

有关包含如何工作的示例,请查看syntax/html.vim(其中包括 Javascript 和 CSS 语法文件)、syntax/perl.vim(其中包括 POD 语法文件)或php.vim(包括字符串中的 SQL 语法突出显示,以全局变量为条件)。

编辑:在我的副本中实际做了一些工作来实现这一点

在 的头部syntax/javascript.vim,正下方syn case ignore,添加

syn include @javaScriptHTML syntax/html.vim
unlet b:current_syntax
syn spell default " HTML enables spell-checking globally, turn it off
Run Code Online (Sandbox Code Playgroud)

然后添加@javaScriptHTML到和contained=的列表中。javaScriptStringDjavaScriptStringS

最后,您必须进行编辑syntax/html.vim以防止它尝试包含syntax/javascript.vim它是否是javascript 加载的:找到读取的行

if main_syntax != 'java' || exists("java_javascript")
Run Code Online (Sandbox Code Playgroud)

并将其更改为

if main_syntax != 'javascript' && ( main_syntax != 'java' || exists("java_javascript")
Run Code Online (Sandbox Code Playgroud)