如果在搜索后有匹配或有匹配,有没有人知道如何突出显示整行。
体育专业。我搜索/ user
现在我想在有匹配的情况下突出显示整行。
修改
我想在搜索突出显示中使用突出显示
我不想使用突出显示组。
答案 0 :(得分:4)
突出显示行的替代方法可能是使用quickfix
列表。例如,执行以下操作会将与模式/user/
匹配的所有行放入当前文件(%
)的quickfix列表中。
: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
答案 1 :(得分:2)
如果您使用
:let @/ = '.*\%(' . @/ . '\m\).*'
应该适用于大多数正则表达式模式(例如,包围处理\|
分支)。您可以优化它以识别^
和$
,以及\V
等魔术修饰符。
答案 2 :(得分:1)
我不知道这对你是否可以接受:
首先,您需要定义突出显示group
:例如userline
:highlight userline ctermbg=darkred guibg=darkred
然后你可以:
:match userline /.*user.*/
所有包含“user”的行都会突出显示。