18

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

我试过:s/PATTERN了,但这会从行中删除模式并将光标放在行的开头,这根本不是我需要的。我希望你可以搜索而不替换......

我希望将它用于宏,以便将光标放在该模式的开头,就像您/PATTERN在整个文件上所做的那样,所以任何对宏友好的东西都会更好。

那里有任何可能有想法的vim用户吗?

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

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

4

5 回答 5

17

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

于 2013-05-15T18:50:21.263 回答
9

尝试通过键入查找模式的第一个字符

f <letter>

这不完全是您所需要的,但可以帮助解决问题。

于 2013-05-15T18:53:44.427 回答
9
/\%9lsearch

其中\%9表示第 9 行。

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

一步到位

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

如需更多帮助,请参阅:

:h /\%l
:h i_CTRL-R
于 2013-05-15T18:48:34.363 回答
7
  1. 将光标放在要搜索的行上
  2. shift用+选择它v
  3. 键入/以开始搜索
  4. 用 前缀您的术语\%V,例如仅在视觉选择的块中\%Vabc搜索abc(在我们的例子中为单行)

vim 截屏

于 2018-05-24T09:24:26.490 回答
2

您可以搜索而不使用替换

:s/PATTERN//gc

然后按n跳过更换。如果没有找到模式,你甚至不会被问到。

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

于 2013-05-15T18:48:09.550 回答