2

検索を行った後に一致がある場合、または一致がある場合、行全体を強調表示する方法を知っている人はいますか?

pe /user を検索します

一致するものがあれば、行全体を強調表示したいと思います。

EDIT
検索の強調表示と同じように強調表示を使用したい。
強調表示グループを使用したくありません。

4

3 に答える 3

4

行を強調表示する代わりに、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
于 2012-11-14T18:49:52.673 に答える
2

使用する場合

:let @/ = '.*\%(' . @/ . '\m\).*'

これは、ほとんどの正規表現パターンで機能するはずです (たとえば、ブラケットは\|分岐を処理します)。^$、および のような魔法の修飾子を認識するようにそれを改良でき\Vます。

于 2012-11-15T07:48:56.810 に答える
1

これがあなたに受け入れられるかどうかはわかりません:

最初にハイライトを定義する必要がありますgroup:例userline

:highlight userline ctermbg=darkred guibg=darkred

次に、次のことができます。

:match userline /.*user.*/

「user」を含むすべての行が強調表示されます。

于 2012-11-14T17:26:30.463 に答える