6

我注意到我的 ubuntu 机器上的 syntax/php.vim 文件有一个php_htmlInStrings选项。我可以打开此选项以在我的 php 文件中的字符串中显示 HTML 语法突出显示,这很棒。我还想在 php 文件中的字符串中突出显示 javascript 语法。有谁知道这是否可以做到,如果可以,我该怎么做?

编辑 - 增加了额外的可能性

我还应该提到,我会很高兴有一个解决方案,我必须在输出结果之前通过一个 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 的等效字符##不会出现在源代码中并且不需要被过滤掉,那么这将是更可取的......

重新编辑 2

根据以下conner的解决方案,可以达到预期的效果,如下所示:

$js = "<script>some javascript</script>";

:let php_htmlInStrings=1在 vim 中)。如果有人可以向我展示使 javascript 语法高亮显示在以下字符串中所需的 vim 脚本,那么我将奖励他们答案:

$js = /*<script>*/"some javascript"/*</script>*/;
4

2 回答 2

2

我认为这个的一般问题是 vim 需要一种方法来区分 javascript 和 HTML 突出显示。在 HTML 文件中,vim 根据其中的<script></script>标签确定这一点以应用 javascript 突出显示。如果你把<script></script>标签放在你的字符串中,你会发现情况就是这样。但是,如果你把它们拿走,那么 vim 就无法知道你的字符串中的内容是 HTML 还是 javascript。你可以通过编辑添加一些东西来解决这个问题,以表示它是希望不会影响结果代码的 javascript,但这很棘手。您可以在 HTML 文件的<script></script>第 167 行看到设置标记规范的位置$VIMRUNTIME/syntax/html.vim。它看起来像这样:

syn region  javaScript start=+<script[^>]*>+ keepend end=+</script>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc
于 2012-07-31T18:26:11.930 回答
0

你试过这个php.vim语法文件吗?

于 2012-07-30T13:45:27.983 回答