0

私は数か月間 vim を使用していますが、この優れたエディターでの経験を改善しようと努力しています。

私がやろうとしているのは、スパイス ネットリスト (電子的なもの) の構文強調表示ファイルを作成することです。

次のパターンを強調しようとしています。

.SUBCKT or_gate AB OUT

(*or_gate* は、セル
AB、およびこのセルのOUT BIENG ピンの名前です)

私がやろうとしているのは、3 つの異なる色で強調表示することです。

  • 1 つは .SUBCKT 用
  • or_gate (セル) 用に 1 つ
  • A、B、および OUT (ピン) 用に 1 つ

そこで、.SUBCKT で始まる行を見て、行のさまざまな単語を一致させる方法を見つけようとしました。

syn matchまたはネストされたsyn 領域のさまざまな組み合わせを試しましたが、間違った方法でやっているように感じます。

これが私の試みの1つの例です:

syn region spiceCKT start ="\.SUBCKT" end ="$" contains =spiceCell,spicePins

syn region spiceCell start ="\.SUBCKT"rs=e end ="$" を含む

syn region spicePins start ="\.SUBCKT\s\S*"rs=e end ="$" を含む

パターン (\s\S*) をいじって、rs=e の部分を追加/削除したり、\zs と \ze を追加して開始パターンまたは終了パターンを定義したりしようとしました。

結局、私はそれを機能させることができず、本来あるべきよりも複雑になっているように感じます.

私の間違いと、そのようなパターンの強調表示を処理する方法を理解するのを手伝ってくれる人はいますか?

4

2 に答える 2

2

あなたは試すことができ syn matchますlook-behind

syn match spiceCKT /^\s*\.SUBCKT/
syn match spiceCell /\v(^\s*\.SUBCKT\s+)@<=or_gate/
syn match spicePins /\v(^\s*\.SUBCKT\s+or_gate\s+)@<=A B OUT/

ちょっとしたテストをしただけです。構文グループがありません。デフォルトのグループで試してみました。次のようになります。

ここに画像の説明を入力

于 2013-03-30T20:47:49.917 に答える
0

ご回答ありがとうございます。それは機能します。ヒントをありがとう。

唯一の欠点は、ファイルが完全な行をロードする必要がある場合、少し遅いことです。

私のニーズに合わせてコードを完成させます:

syn マッチ spiceCKT /^\s*.SUBCKT/

syn match spiceCell /\v(^\s*.SUBCKT\s+)@<=\S*\s+/

syn match spicePins /\v(^\s*.SUBCKT\s+or_gate\s+)@<=(\s*\S*)*/

@<= の行は、下にスクロールすると画面が少し遅くなります。私はまだそれに取り組んでいます。

于 2013-04-02T20:43:27.023 に答える