Javascript 使Vim正确地突出显示脚本类型=";text/html";

Javascript 使Vim正确地突出显示脚本类型=";text/html";,javascript,html,vim,syntax-highlighting,Javascript,Html,Vim,Syntax Highlighting,在这种情况下,如何使Vim正确地语法高亮显示(使用,例如与): 一些模板 //这应该呈现为Javascript var x=function(){return 3;} 给出的解决方案涉及编辑Vim的内部语法文件,这似乎是错误的,并且它专门查找“text/javascript”这是错误的 我假设解决方案是某种语法插件,我可以保存在我的.vim目录中,但我对vim的语法内部结构不太熟悉,无法理解它 (请注意,不要应用,因为我没有使用Ruby on Rails。)首先将vim的内部html语法文件

在这种情况下,如何使Vim正确地语法高亮显示(使用,例如与):


一些模板
//这应该呈现为Javascript
var x=function(){return 3;}
给出的解决方案涉及编辑Vim的内部语法文件,这似乎是错误的,并且它专门查找“
text/javascript
”这是错误的

我假设解决方案是某种语法插件,我可以保存在我的
.vim
目录中,但我对vim的语法内部结构不太熟悉,无法理解它


(请注意,不要应用,因为我没有使用Ruby on Rails。)

首先将vim的内部html语法文件复制到
$HOME/.vim/syntax/html.vim
中,以便您只为自己而不是全局更改行为

然后找到起始于
synregionjavascript
的行,并将其替换为两行

syn region  script_notype start=+<script>+ keepend end=+</script>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc
syn region  script_jstype start=+<script[^>]*type="text/javascript"[^>]*>+ keepend end=+</script>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc
syn region script\u notype start=++keepend=++me=s-1包含=@htmlJavaScript、htmlcsstylecomment、htmlScriptTag、@htmlprepc
syn region script_jstype start=+]*type=“text/javascript”[^>]*>+keepend=++me=s-1包含=@htmlJavaScript、htmlcsstylecomment、htmlScriptTag、@htmlprepc
第一行用于普通的
选项卡,第二行用于

但是,这不包括
标记没有
类型
属性具有其他属性的情况。本例应该获得javascript语法,但不会。我想这是个小问题。

也许这会帮助你:

如果有一天上面的链接断开,请将以下代码放入
~/.vim/after/syntax/html.vim

unlet b:current_syntax
syn include @HTML $VIMRUNTIME/syntax/html.vim
syn region htmlTemplate start=+<script [^>]*type *=[^>]*text/template[^>]*>+
\                       end=+</script>+me=s-1 keepend
\                       contains=@HTML,htmlScriptTag,@htmlPreproc
unlet b:当前的_语法
syn include@HTML$VIMRUNTIME/syntax/HTML.vim
syn区域htmlTemplate开始=+]*类型*=[^>]*文本/模板[^>]*>+
\end=++me=s-1暂停
\contains=@HTML,htmlScriptTag,@htmlprepc

应该有人为此编写插件!;)

显然,您需要编辑HTML语法脚本和/或JavaScript语法脚本,因为它们已经很旧了。尝试一些东西,当你陷入困境时,带着一个真正可行的问题回来。好的,看看我在哪里“对Vim的语法内部结构不够熟悉,无法解决它”。至少有一个起点会很有帮助。这对格式有效,但不再正确。@Dan:你能再检查一下是否设置了相同的格式吗?对我来说,即使是
,它也能正常工作。对不起,我恐怕无法解决这个问题。它在我的机器上工作得很好,但在你的机器上却不行。。。试着玩一会儿,我相信你能让它工作。
unlet b:current_syntax
syn include @HTML $VIMRUNTIME/syntax/html.vim
syn region htmlTemplate start=+<script [^>]*type *=[^>]*text/template[^>]*>+
\                       end=+</script>+me=s-1 keepend
\                       contains=@HTML,htmlScriptTag,@htmlPreproc