5

次の 4 種類の強調表示があります.vimrc(それぞれが異なる色を表示します)。

  • incsearch (検索結果に合わせてハイライト表示)
  • match (現在の単語、ビジュアル スタジオ エディター)
  • 2match (行末の末尾スペース)
  • hlsearch (通常の/検索一致)

強調表示の優先順位は、上でリストしたとおりのようです。たとえば、インクリメンタル検索の色付けは、同じ文字に存在する場合、他の一致する色を上書きします。

優先順位を 2 番目にして、と色hlsearchの両方をオーバーライドするようにしたいと思います(同じキャラクターに存在する場合)。match2match

それを達成する方法はありますか?

参考までに、これらは私の.vimrcファイルの関連行です。

[...]
set hlsearch
set incsearch
[...]
function Matches()
    highlight curword ctermbg=darkgrey cterm=bold gui=bold guibg=darkgrey
    silent! exe printf('match curword /\V\<%s\>/', escape(expand('<cword>'), '/\'))
    highlight eolspace ctermbg=red guibg=red
    2match eolspace /\s\+$/
endfunction
au CursorMoved * exe 'call Matches()'
[...]
4

1 に答える 1

9

使用するすべての優先順位は固定されています。優先順位を指定する唯一の方法は、およびmatchadd()の代わりに使用できる経由です。hlsearch の優先順位は 0 であるため、負の優先順位 (-1 など) を渡す必要があります)。:match:2match

たとえば、

:match Match /\<\w\{5}\>/

if exists(w:lastmatch)
    call matchdelete(w:lastmatch)
endif
let w:lastmatch = call matchadd('Match', '\<\w\{5}\>', -1)
于 2012-12-28T12:13:27.770 に答える