vim - 有匹配项时突出显示整行

标签 vim line match highlight

有谁知道如何突出显示整行(如果有或搜索后有匹配项)。

我搜索/user

现在,如果有匹配项,我想突出显示整行。

编辑
我想像搜索突出显示一样使用突出显示。
我不想使用突出显示组。

最佳答案

高亮行的替代方法可能是使用 quickfix 列表。例如,执行以下操作会将与模式 /user/ 匹配的所有行放入当前文件 (%) 的快速修复列表中。

:vimgrep /user/ %

您可以通过执行 :copen 在单独的窗口中显示 quickfix 列表的内容。您可以通过 :cnext:cprev 和 friend 在匹配行之间移动。个人推荐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 而不带任何参数。

我个人更喜欢使用 :vimgrepquickfix 列表,但您的需求可能与我的不同。

有关更多帮助,请参阅:

:h quickfix
:h :vimgrep
:h :cnext
:h :cexpr
:h :caddexpr
:h :match

关于vim - 有匹配项时突出显示整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13383726/

相关文章:

vim - NERDTree:未创建节点

c# - 在字符串的每一行添加一个字符

html - 在 HTML5 Canvas 上绘制虚线?

perl - 计算文本文件中匹配术语的数量?

php - 是否有适用于部分匹配的 array_keys 版本?

c++ - 键入 “$” 命令不会跳转到行尾 [光标设置为 “|”(条形/管道)而不是 block 形]

git diff 显示 ^M 颜色 ui 为真

c++ - 突出显示光标所在的括号之间的行

junit - 如何处理日志记录和单元测试覆盖率?

Python 正则表达式 - 匹配仅包含 A、B 或 C 的单词