検索を行った後に一致がある場合、または一致がある場合、行全体を強調表示する方法を知っている人はいますか?
pe /user を検索します
一致するものがあれば、行全体を強調表示したいと思います。
EDIT
検索の強調表示と同じように強調表示を使用したい。
強調表示グループを使用したくありません。
行を強調表示する代わりに、quickfix
リストを使用することもできます。たとえば、次のように実行すると、パターン/user/
に一致するすべての行が現在のファイルのクイックフィックス リストに追加されます ( %
)。
:vimgrep /user/ %
quickfix
を実行すると、リストの内容を別のウィンドウに表示できます:copen
。、 、 、およびフレンドによって:cnext
、一致する行間を移動できます。:cprev
個人的には、Tim Pope の優れたunimpaired.vimプラグインをお勧めします。このプラグインは、リスト内を移動するのに[q
適した自然な感じのマッピングを提供します。フラグを追加して、行ごとに複数の一致を検索し、それらをリストに追加することもできます。]q
quickfix
g
quickfix
この 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」を含むすべての行が強調表示されます。