検索を行った後に一致がある場合、または一致がある場合、行全体を強調表示する方法を知っている人はいますか?
pe /user を検索します
一致するものがあれば、行全体を強調表示したいと思います。
EDIT
検索の強調表示と同じように強調表示を使用したい。
強調表示グループを使用したくありません。
行を強調表示する代わりに、quickfixリストを使用することもできます。たとえば、次のように実行すると、パターン/user/に一致するすべての行が現在のファイルのクイックフィックス リストに追加されます ( %)。
:vimgrep /user/ %
quickfixを実行すると、リストの内容を別のウィンドウに表示できます:copen。、 、 、およびフレンドによって:cnext、一致する行間を移動できます。:cprev個人的には、Tim Pope の優れたunimpaired.vimプラグインをお勧めします。このプラグインは、リスト内を移動するのに[q適した自然な感じのマッピングを提供します。フラグを追加して、行ごとに複数の一致を検索し、それらをリストに追加することもできます。]qquickfixgquickfix
この vimgrepコマンドにマッピングして、少し速くすることができます。私は個人的に私の中で以下を使用します~/.vimrc
nnoremap <leader>/ :vimgrep/<c-r>//g %<cr>:copen<cr>
コマンドを使用することの欠点:vimgrepは、保存されたファイルが必要であるため、保存されていないバッファーを最初に保存する必要があることです。以下に示すように、:globalとを組み合わせて使用することで、これを克服できます。:cgetexpr
:cexpr []
:g//caddexpr expand("%").":".line(".").":".getline(".")
quickfixただし、リストを使用する代わりに、一致する行を強調表示したいだけかもしれません。:match私はそのように使用することをお勧めします
:match Search /.*user.*/
必要なハイライト グループを使用できます。Search適切と思われるので選択します。強調表示をオフにするには:match、引数なしで実行します。
個人的:vimgrepには とquickfixリストを使用することを好みますが、ニーズは私のものとは異なる場合があります。
詳細については、次を参照してください。
:h quickfix
:h :vimgrep
:h :cnext
:h :cexpr
:h :caddexpr
:h :match
使用する場合
:let @/ = '.*\%(' . @/ . '\m\).*'
これは、ほとんどの正規表現パターンで機能するはずです (たとえば、ブラケットは\|分岐を処理します)。^と$、および のような魔法の修飾子を認識するようにそれを改良でき\Vます。
これがあなたに受け入れられるかどうかはわかりません:
最初にハイライトを定義する必要がありますgroup:例userline
:highlight userline ctermbg=darkred guibg=darkred
次に、次のことができます。
:match userline /.*user.*/
「user」を含むすべての行が強調表示されます。