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

#1 楼

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


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

还可以使用:ilist

:100,235il foo<CR>


请参阅:help range:help :global:help :ilist

#2 楼

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

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


示例:第200到299行表示“好”模式。

/%>199l\%<300lgood


#3 楼

100GV325G<esc>
/\v%Vpattern




100GV325G<esc>直观地从100到325中选择行,返回normal模式。 。

如果图案包含换行符,则必须添加另一个/\v%Vpattern来限制图案在可视区域的结尾:


#4 楼

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

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

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



为了仅在b中搜索f()

< br转到{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!这与罗马人的答案有何本质区别?

– D. Ben Knoble♦
19-10-3在12:24

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

– dmytro.poliarush
19-10-3在12:45



好的,那么我建议您解释一下它们的用法和ilist的相关性

– D. Ben Knoble♦
19-10-3在12:56