在缓冲区中搜索并显示' context'线

时间:2014-05-27 15:18:16

标签: vim

:vimgrep [search text] %  

和copen为缓冲区中的所有[搜索文本]提供了一个很好的列表 有没有办法在结果中包含前一行和每行匹配后的行?我正在寻求折叠以实现这一目标,但还没有想到这一点,但是...

3 个答案:

答案 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

请务必阅读文档以了解插件可以提供的所有内容。