バックグラウンド
私は多くのWindowsシステム管理のニーズにJScript(MicrosoftのECMAScript実装)を使用しています。これは、ActiveX(自動COM)オブジェクトをたくさん使用していることを意味します。これらのオブジェクトのメソッドは、多くの場合、数値またはブール引数を想定しています。例えば:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var a = fso.CreateTextFile("c:\\testfile.txt", true);
a.WriteLine("This is a test.");
a.Close();
2行目では、2番目の引数が私が話しているものであることがわかります。「true」のブール値は、メソッドの動作がどのように変化するかを実際には説明していません。これは私にとっては問題ではありませんが、自動化に恥ずかしがり屋の同僚は簡単に不気味になります。議論が何をしているのかわからないことは彼らを驚かせます。残念ながら、定数の長いリスト(もちろん、現在のJScriptバージョンはそれらをサポートしていないため、実際の定数ではありません)もそれらを驚かせます。そこで、これらの基本的な関数呼び出しのいくつかをインラインブロックコメントで文書化することにしました。上記の例の2行目は、次のように記述されます。
var a = fso.CreateTextFile("c:\\testfile.txt", /*overwrite*/ true, /*unicode*/ false);
しかし、それは私にとってジレンマを強調する小さな構文で終わります。コメントが活気に満ちているのが好きです。ブロックコメントと行コメントの両方。ただし、これらの小さなインラインブロックコメントは、個人的にはほとんど意味がありません。これらの特定のコメントをより控えめな方法で強調したいと思います(たとえば、白地にライトグレー)。それは私のジレンマに私をもたらします。
ジレンマ
開始マークと終了マークの両方が同じ行にある場合、ブロックコメントのデフォルトの構文強調表示をオーバーライドしたいと思います。理想的には、これは私のvimrcファイルでのみ行われ、javascript.vim構文の個人用コピーではありません。私の最初の試みは哀れです:
hi inlineComment guifg=#bbbbbb
match inlineComment "\/\*.*\*\/"
この正規表現パターンの最初の問題は、貪欲な検索であることがすぐにわかります。行の最初の「/*」から最後の「*/」まで一致します。つまり、2つのインラインブロックコメントの間のすべてがこのハイライトスタイルにもなります。私はそれを修正することができますが、私の2番目の懸念にどう対処するかは本当にわかりません。
ECMAScriptの文字列リテラル内でコメントを定義することはできません。したがって、この構文の強調表示は、文字列の強調表示もオーバーライドします。システム管理スクリプトでこれに問題が発生したことは一度もありませんが、ブラウザ用の多くのjavascriptライブラリ(less.jsなど)のソースを調べていると、しばしば問題になります。
素晴らしいStackOverflowコミュニティがvimrczenを復元するために推奨する正規表現パターン、構文定義、またはその他のソリューションは何ですか?