nanoの文字列とコメントの組み合わせの構文を強調する

nanoの文字列とコメントの組み合わせの構文を強調する

.nanorc以下のテキストに示すように、構文の強調を設定できるかどうか、誰かが教えてくれるかどうか疑問に思います。

Dim s$ = "foo ' bar" ' bar "foo"

...文字列は"foo 'bar"すべて1色で強調表示され、次のコメントは' bar "foo"別の色で強調表示されます。

私がこうすれば:

# Comments.
color yellow "'.*"

# Strings
color brightmagenta ""(\\.|[^"])*""

それから私はこれを得ます:

図1

別の順序で行う:

# Strings
color brightmagenta ""(\\.|[^"])*""

# Comments.
color yellow "'.*"

それから私はこれを得ます:

図2

答え1

コメントに次の内容がある場合いいえが含まれています'。つまり最後 'その行がコメントの先頭であれば、最もうまくいくようです。戻る行の終わりから非欲張り検索が実行されます。

文字列用語を使用しますが、他のコメント用語を使用する方法を試してください。

# Strings
color brightmagenta ""(\\.|[^"])*""

# Comments.
color green "[^']*$"

これはうまくいきます。とは別に残念ながら、コメントマーク(')には色はありません。

ほぼ望ましい結果のスクリーンショット

次のように追加します'

# Strings
color brightmagenta ""(\\.|[^"])*""

# Comments.
color green "'[^']*$"

ついに希望の結果を得ました。

目的の結果のスクリーンショット

注:貪欲ではない代替[^']*うん'.*?、私最初以下を参考にしてみましたが失敗しました...


怠惰な(貪欲ではない)*?エラーが発生します。

.*?私の最初の考えは使用することでした。会議コメントマーク(')も次のように色付けされています。

# Comments.

color green "'.*?$"

論理的に、最後から始まる貪欲でない検索は、あなたのコメントにも適用されます。

しかし、nanoではエラーが発生します。

Bad regex "'.*?$": repetition-operator operand invalid

それ可能エラーです。ご覧ください。Mac OSでBrew #41のnano 2.3.6を使用する場合のphp.nanorc、sh.nanorc、およびzsh.nanorcの正規表現エラー修正されたとします。

A:POSIX正規表現はサポートされていませんか?怠惰(または単純な怠惰)によるものです。問題のある行から?を削除するとエラーは削除されますが、他の人の評価が変わるため、ここではそうしたくありません。

注:OS Xでnanoを実行すると、このエラーが発生しました。これが関連しているかどうかはわかりません。

関連情報