我注意到我的Ubuntu机器上的syntax/php.vim文件有一个php_htmlInStrings选项。我可以打开此选项以在我的php文件中的字符串内显示HTML语法高亮,这很好。我还想在php文件中的字符串内进行javascript语法高亮。有人知道是否可以实现,如果可以,如何实现?
编辑-添加额外可能性
我还应该提到,如果需要,在输出结果之前,我将通过PHP函数解析所有JavaScript字符串也是可行的解决方案。这可能会避免Conner所提出的问题,即vim难以确定字符串是否包含JavaScript。例如:
我很乐意做这件事,因为我可能会将html/css/js变量缩小器整合到我的项目中,这将对字符串进行替换。当然,如果有一个针对vim的特定等效字符
编辑-添加额外可能性
我还应该提到,如果需要,在输出结果之前,我将通过PHP函数解析所有JavaScript字符串也是可行的解决方案。这可能会避免Conner所提出的问题,即vim难以确定字符串是否包含JavaScript。例如:
$js = "some regular text which is not javascript##now vim has
detected that this part is javscript##back to regular text";
parse($js);
function parse($str)
{
return str_replace('##', '', $str);
}
我很乐意做这件事,因为我可能会将html/css/js变量缩小器整合到我的项目中,这将对字符串进行替换。当然,如果有一个针对vim的特定等效字符
##
,它不会显示在源代码中,也不需要过滤,那么这将更可取...根据conner在下面提供的解决方案,可以通过以下方式实现所需的效果:$js = "<script>some javascript</script>";
(使用 :let php_htmlInStrings=1
在 vim 中)。如果有人能展示给我所需的vim脚本,使得以下字符串中的javascript语法高亮显示,则我会将答案授予他们:
$js = /*<script>*/"some javascript"/*</script>*/;
start=/{/ keepend end=/}/me=s-1
。 - Conner$js = (("some javascript"));
的东西 - 这在php中编译得很好。唯一的问题是它会被嵌套函数调用所捕获。例如:print_r(("blah" == $a) ? 'yes' : 'no'); ...more code...print_r('and again'.(($a == "blah") ? 'yes' : "no"));
- mulllhausen$js = /*<js>*/"一些JavaScript代码"/*<js>*/
或类似的东西 :) - mulllhausen