カスタムの強調表示ルールはどこに属しますか?


11

たまに、デフォルトの構文強調表示の色とスタイルを自分の好みで上書きしたい。

これを行う最も適切な方法は、自分のカラースキームを作成することだと思います。しかし、いくつか質問があります。

  1. 特定の言語で特定の構文グループにハイライトを設定したい場合、これは私のカラースキームに属しafter/syntax/[filetype].vimますか、それとも配置した方が良いですか?

    highlight jsAssignExpIdent cterm=bold gui=bold
    

    私が取り組んでいる言語がロードされるため、colorschemeにあいまいな言語固有のルールを配置するのは少し奇妙に見えますが、構文ファイルに強調表示ルールを配置することはさらに悪いようです。

  2. 時々、特定の言語の新しい構文規則を作成しますafter/syntax/[filetype].vim。他のユーザーがこれらの拡張機能を使用したい場合に備えて、一般的なデフォルトのハイライトグループにリンクするデフォルトのハイライトルールを提供するのが適切でしょうか?別のユーザーがそのハイライトの色を上書きしたい場合、どうすればいいですか?

    ::::: after/syntax/asm.vim :::::
    
    syn match asmHexNumber /\(0x\|\$\)[0-9A-Fa-f]\+/
    highlight default link asmHexNumber Number
    

回答:


9

最初の質問

ハイライトの定義は、カラースキームに属しています。それらがすべてのバッファにロードされるという事実は、それらの言語に関係なく、まったく問題になりません。

カラースキームを編集したくない場合は、これらのハイライト定義をplugin/myhighlights.vim次の場所に配置できます。

function! MyHighlights()
    highlight ...
    highlight ...
endfunction

augroup MyHighlights
    autocmd!
    autocmd ColorScheme * call MyHighlights()
augroup END

二番目の質問

あなたのサンプルはまさにあなたがやるべきことであり、すべての構文スクリプトがどのように行うかです。このメソッドを使用すると、プラグイン開発者は、特定の色をユーザーの喉に押し付けることなく、適切なデフォルトを定義できます。


確認してくださってありがとうございます。しかしhighlight link ...、そのファイルタイプのファイルがロードされるたびに、これらがcolorchemeからの設定を上書きする構文ファイルにコマンドを置くかどうか心配です。その名前にハイライトルールが存在しないことを確認した後にのみ行う必要がありhighlight link ...ますか?
joeytwiddle

ああ、心配する必要はありません。Vimのドキュメントによると、{from-group}のハイライト設定がすでに存在する場合、「!」以外のリンクは作成されません。与えられます。ソースファイル内の ":highlight link"コマンドの場合、エラーメッセージは表示されません。これは、すでに設定されているグループのリンクをスキップするために使用できます。
joeytwiddle

ただし、カラースキームを微調整する人にとってhighlight linkは、カラースキームのhighlight linkaが構文ファイルのによって後で上書きされる可能性があります。これを回避するには、リンクの代わりに実際の引数(ctermbg、guifgなど)を使用できます。
joeytwiddle

ユーザーは、特定のハイライトグループにどの色を使用するかについて最後の言葉を持っている必要があります。そのため、カラースキームで言語固有のハイライト定義を確認することは珍しくありません。highlight link ...構文スクリプトでのみ使用し、必要に応じてユーザーが上書きできるようにする必要があります。
romainl 2016年

私の懸念は、ユーザーhighlight link ...が自分のカラースキームで使用する場合、構文ファイルが後で独自にリセットする可能性があることhighlight link ...でした。良い構文ファイルはを使用してこれを回避していることがわかりますhighlight default link ...。それはおそらくasmHexNumber私の質問のルールの修正になるはずです。
joeytwiddle
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.