php - vim php_javascriptInStrings 选项?

标签 php javascript vim syntax-highlighting

我注意到我的 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

按照下面康纳的解决方案,可以达到预期的效果:

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

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

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

最佳答案

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

syn region  javaScript start=+<script[^>]*>+ keepend end=+</script>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc

关于php - vim php_javascriptInStrings 选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11661614/

相关文章:

php - 解析由 php json_encode 创建的 JSON 数据

php - apache 添加额外的参数到 url

javascript - 如何自定义 emmet 以生成像 html 这样的动态 javascript 代码

javascript - 视频JS : Object doesn't support property or method 'querySelector'

vim - 在 vim 中,如何滚动缓冲区以使光标位置位于屏幕中央?

linux - imap 在 Vim 中无法工作

php - 在 PHP 中显示 "No Results Found"

php - 如何在 Yii2 中创建控制台命令(rake 任务)?

javascript - Object.defineProperty 的主要用例是什么?

vim - 如何更改 Vim 全方位补全中使用/检测到的符号的边界?