Vim - 仅在当前行上查找模式

时间:2013-05-15 18:37:07

标签: vim macros

我想知道是否有办法找到模式,但将其限制在当前行。基本上,相当于/PATTERN但仅限于当前行,而不是整个文档。

我已经尝试了:s/PATTERN,但是从行中删除了模式并将光标放在行的开头,这根本不是我需要的。我希望你能在没有替换的情况下进行搜索......

我希望将它用于宏,以便将光标放在该模式的开头,就像在整个文件上执行/PATTERN时那样,所以任何宏观 - 友善甚至更好。

那些可能有想法的vim用户?

编辑:宏中的0/PATTERN可以满足我当前的需求,但我希望有更具体的方法来限制搜索。

答案:到目前为止,在这里发布了一些方法,但我现在最喜欢的方法是使用Shift+V直观地选择当前行,然后/\%V仅搜索在视觉选择中。然后再次Shift+V将关闭视觉模式。

5 个答案:

答案 0 :(得分:11)

我对宏的了解有限,但是以交互方式,您可以选择Shift + V的当前行,然后执行/\%Vsearch(请参阅http://vimdoc.sourceforge.net/htmldoc/pattern.html#/ \%V)。

答案 1 :(得分:7)

/\%9lsearch

其中\%9表示第9行。

输入行号仍然有点蹩脚。您可以 ctrl + r = ,然后是vim表达式,输入来评估vim表达式并插入其输出。 line('.')将返回光标的行。

完成一个步骤

/\%<c-r>=line('.')<cr>lsearch

如需更多帮助,请参阅:

:h /\%l
:h i_CTRL-R

答案 2 :(得分:7)

尝试通过键入

来查找模式的第一个字符
f <letter>

这不是你需要的,但可以帮助解决问题。

答案 3 :(得分:2)

  1. 将光标放在要搜索的行上
  2. 选择 shift + v
  3. 输入 / 开始搜索
  4. 使用\%V为您的字词添加前缀,例如\%Vabc仅在视觉选择的块中搜索abc(在我们的例子中为单行)
  5. vim screencast

答案 4 :(得分:1)

您可以使用

进行搜索而无需替换
:s/PATTERN//gc

然后按 n 跳过替换。如果找不到模式,您甚至不会被问到。

您也可以只突出当前行或行范围。