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']
div
h1
p
htmlTagName
htmlTag
一部の代替/カスタム構文ファイルは、名前がわずかに異なる他の構文グループを定義している可能性があるため、私の例は私にのみ有効です。
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