【问题标题】:How to show lines matching search in open folds in vim?如何在vim的打开折叠中显示匹配搜索的行?
【发布时间】:2015-08-13 18:29:20
【问题描述】:

如何在仅与“foo”匹配的打开折叠中显示所有行?

我按照"search only in folded text" 试过这个:

:folddoopen g/foo

但出现此错误:E147: Cannot do :global recursive


vim 版本:7.3(2010 年 8 月 15 日)

【问题讨论】:

  • 这取决于你想做什么。如果您只想查看匹配的行而不是将光标移到那里,则解决方案是打开hlsearch(参见`:help 'hlsearch')。关闭的折叠将保持关闭状态,因此您不会在里面看到任何匹配项。 :)
  • 您不能使用:foldd[oopen] 后跟global,因为foldd 本质上是一个global 命令本身(除了不是采用模式来应用cmd它会自动对所有非折叠行执行此操作)。

标签: search vim folding


【解决方案1】:

:folddoopen:g 不能以有意义的方式一起使用。
而是将:gfoldclosed() 一起使用:

:g/foo/if foldclosed('.') == -1 | # | endif

如需更多帮助,请参阅:

:help :g
:help /
:help :if
:help foldclosed()
:help :#
:help :foldopen

【讨论】:

  • 不,实际上返回所有行。
  • 更接近,但返回闭合折叠中的行。
  • foldclosed('.') 返回-1 用于未处于闭合折叠中的行。我已经对其进行了测试,它只显示与foo 匹配且不在封闭线上的行。
  • 我的错,我不知道我做错了什么,但它现在对我有用。干得好@Peter_Rincker -- 谢谢你的解决方案!
猜你喜欢
  • 2012-06-13
  • 2010-12-20
  • 1970-01-01
  • 2013-08-13
  • 2012-08-12
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
  • 2013-09-19
相关资源
最近更新 更多