:vimgrep [search text] %
和copen为缓冲区中的所有[搜索文本]提供了一个很好的列表 有没有办法在结果中包含前一行和每行匹配后的行?我正在寻求折叠以实现这一目标,但还没有想到这一点,但是...
答案 0 :(得分:2)
为了显示在quickfix窗口中,:vimgrep
也需要匹配上下文行。建立"匹配上下"进入搜索正则表达式会很困难,而你仍然没有折叠。
如果您使用:grep
代替:vimgrep
,则可以指定上下文(-C NUM
),但这不会自动折叠。
另一种选择是对quickfix结果进行后处理(通过:autocmd QuickFixCmdPost
),但获取和折叠这些行并不是一件容易的事。
我到目前为止看到的最接近的解决方案是Folding with Regular Expression Vim Tips Wiki页面上描述的折叠表达式。这仅适用于当前缓冲区,但可以快速设置并启用(一级或两级)上下文折叠。
答案 1 :(得分:0)
这里有类似的东西:: g / [搜索文本] / - 1,+ 1nu将显示[搜索文本]上方和下方的上下文以及该行的行号。您可以使用以下命令快速跳转到其中:lnum其中lnum是行号。一般情况下,我不会这样做 - 我只需按下快速修复列表中的输入即可跳转并查看结果。
答案 2 :(得分:0)
foldutil插件可以折叠缓冲区,只展开与搜索模式匹配的区域。
通常,它非常灵活,能够以各种方式折叠物品。您的特定用例将如下工作:
:FoldNonMatching <pattern> <number-of-context-lines>
例如,
:FoldNonMatching \<function\> 3
请务必阅读文档以了解插件可以提供的所有内容。