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

Aus*_*tin 13 vim macros

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

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

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

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

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

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

joo*_*oon 11

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

  • 这大概是我的最爱。我不知道 \%V 在正常/搜索中工作!将非常有助于限制搜索空间。 (2认同)

小智 9

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

f <letter>
Run Code Online (Sandbox Code Playgroud)

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


Pet*_*ker 8

/\%9lsearch
Run Code Online (Sandbox Code Playgroud)

在哪里\%9意味着第9行.

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

在一个完整的步骤

/\%<c-r>=line('.')<cr>lsearch
Run Code Online (Sandbox Code Playgroud)

有关更多帮助请参阅:

:h /\%l
:h i_CTRL-R
Run Code Online (Sandbox Code Playgroud)

  • 您能对此进行扩展吗?我已经尝试过了,我 100% 确定我没有正确输入。也许展示一下单步方法是如何工作的?它看起来很有用,但我无法让它工作。 (2认同)

ale*_*lex 7

  1. 将光标放在要搜索的行上
  2. shift+选择它v
  3. 键入/以开始搜索
  4. 前缀为你的任期\%V,如\%Vabc搜索abc仅在视觉上选定的块(在我们的情况下,单线)

vim 截屏