如何在某些行号之间搜索字符串?


15

这是我最近遇到的一个问题。我有一个包含数百行文本的文件。如何搜索两个特定行号之间的字符串?例如,我想在行号100和325之间进行搜索。

Answers:


7
:100,235g/foo/#<CR>

然后按:147<CR>跳到所需的行。

您也可以使用:ilist

:100,235il foo<CR>

:help range:help :global:help :ilist


5

还有另一种在特定行之间搜索的方法。

/%>{linenumber}l\%<{linenumber}{pattern}

例:

/%>199l\%<300lgood

这将从200行到299行中搜索“好”模式。

%>199l - l is for line, >199 denotes the lines greater than 199

2
100GV325G<esc>
/\v%Vpattern
  • 100GV325G<esc>直观地从100到325中选择行,返回normal模式。
  • /\v%Vpattern用于:h /\%V将搜索范围限制为最后一个可视区域。

如果您的模式包含换行符,则必须添加另一个\%V以在视觉区域限制模式结尾:

100GV325G<esc>
/\v%Vpattern%V
  • :h /\%V

1

有时您需要在函数/方法中搜索给定的符号

  void f(bool b)
  {
    b;
    b;
  }

  void g(bool b)
  {
    b;  
    b;  
    b;  
    b;  
  }

为了寻找bf()只有:

  • {f()
  • 进入视觉模式 V
  • f()以“%” 结尾
  • 用':'命令转到执行行。
  • 一旦您在命令行输入il b中获取 :'<,'>il b

<CR>(输入)之后

b.cpp
  1:   15     b;
  2:   16     b;
Press ENTER or type command to continue

欢迎来到Vi和Vim!这与romainl的答案有何实质不同?
D. Ben Knoble

谢谢!首先,我相信刚接触vim且不熟悉%视觉模式的人会发现它们很有用。其次,无需明确输入行范围。
dmytro.poliarush

1
好的,那么我建议您解释一下它们的用法是如何相关的,以及如何将其ilist
用作
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.