Vimで適切なhtmlタグの強調表示を探していたときに、この投稿を見つけました。しかし、romainlの回答(および彼のスクリーンショット)とhtml構文ファイルを見た後、htmlタグの色を変更せずに、属性の後の=(等号)の色を属性の色と一致するように変更するにはどうすればよいでしょうか?
1 に答える
探査
これは私がどこかで(ずっと前に、おそらくVim Wikiで)見つけた非常に便利な関数で、カーソルの下にある単語/記号の構文グループを提供します。
function! SynStack() if !exists("*synstack") return endif echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")') endfunc検査する項目にカーソルを置き、
:call SynStack()入力して、コマンドラインの構文グループをエコーします。にカーソルを置く
=と<div id="example"></div>、の出力はSynStack()です['htmlTag']。カーソルを合わせると、
<>私も取得['htmlTag']します。カーソルを合わせると、 (、 …)の色が。から継承するという特別な構文グループを介して定義されている
divことを意味します。['htmlTag', 'htmlTagN', 'htmlTagName']divh1phtmlTagNamehtmlTag一部の代替/カスタム構文ファイルは、名前がわずかに異なる他の構文グループを定義している可能性があるため、私の例は私にのみ有効です。
SynStack()正しい構文グループを取得するには、いろいろと試してみる必要があります。反射
これまでに収集した情報から、タグ名()をタグの他の部分から独立してスタイル設定できることは明らかですが、異なる
['htmlTagName']方法で強調表示することはできないようです。=と同じ構文グループの一部であるため、<>必然=的に同じように強調表示されます。2つの可能性があります:
a。
<、=と>は同じ色divですが、違います。b。
<、、、divおよび=は>すべて同じ色です。元のテーマは
a私が気に入らなかったパスをたどったのでb、前の質問への回答の数行で少しカスタマイズする必要がありました(パス)。hi htmlTag guifg=#90b0d1 gui=NONE hi htmlSpecialTagName guifg=#90b0d1 gui=NONE hi htmlTagName guifg=#90b0d1 gui=NONE hi htmlEndTag guifg=#90b0d1 gui=NONEそのままでは、
=色を変えること<>はできません。色を付けたい場合は=、HTML構文ファイルとカラースキーム、カウボーイスタイルを編集します。アクション
最初のステップは、デフォルトのHTMl構文ファイルのローカルコピーを作成することです。
$ cp /usr/share/vim/vim73/syntax/html.vim ~/.vim/syntax/html.vim次のステップは、このファイルを編集することです。2つの変更を実行します。
htmlEqualSign構文グループの定義を追加します44行目は次のようになります(注意!徹底的にテストされていません)。
syn match htmlEqualSign contained "="グループ
htmlEqualSignに追加htmlTagの40行目を次の
~/.vim/syntax/html.vimように変更する必要があります。syn region htmlTag start=+<[^/]+ end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgClusterに:
syn region htmlTag start=+<[^/]+ end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster,htmlEqualSign
最後のステップは、希望どおりに配色するように配色を編集する
=ことです。これを行うには、配色のどこかにこの行を追加します。hi htmlEqualSign guifg=#00ff00もちろんお好みの色で。
しかし、私はあなた
=がと同じ色になりたいと思いますid(それはあなたの質問からはあまり明確ではありません)。htmlEqualSignそのために、グループを属性に使用されているグループに「リンク」します。繰り返しになりますが、これ:call SynStack()は非常に役立ちます。属性の構文グループはhtmlArg、カラースキームに追加する行が次のようになるようにするためです。hi link htmlEqualSign htmlArg