6

ubuntu マシンの syntax/php.vim ファイルにphp_htmlInStringsオプションがあることに気付きました。このオプションをオンにして、php ファイルの文字列内で HTML 構文の強調表示を表示できます。これは素晴らしいことです。また、php ファイルの文字列内で JavaScript 構文の強調表示を行いたいと考えています。これができるかどうかは誰にもわかりません。

編集 - 追加の可能性

また、結果を出力する前に、php 関数を使用してすべての JavaScript 文字列を解析する必要があるソリューションに満足していることにも言及する必要があります。これは、vim が文字列に javascript が含まれているかどうかを判断できないという以下の conner によって提案された問題を回避する可能性があります。例えば:

$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>";

:let php_htmlInStrings=1vimで)。次の文字列に javascript 構文の強調表示を表示するために必要な vim スクリプトを誰かが私に見せてくれれば、私は彼らに答えを与えます:

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

2 に答える 2

2

これに関する一般的な問題は、vimがjavascriptとHTMLの強調表示を区別する方法を必要としていることだと思います。<script></script>HTMLファイルでは、vimは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 に答える