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

qfe3c7zg  于 2023-06-30  发布在  其他
关注(0)|答案(6)|浏览(210)

我想知道是否有一种方法可以找到一个模式,但将其限制在当前行。基本上,相当于/PATTERN,但仅限于当前行,而不是整个文档。
我尝试过:s/PATTERN,但这会删除该行中的模式,并将光标放在该行的开头,这根本不是我所需要的。我希望你能在不更换的情况下搜索。。
我希望在宏中使用它,以便将光标放置在模式的开始处,就像在整个文件上执行/PATTERN时一样,因此任何宏友好的东西都更好。
有没有vim用户有什么想法?
编辑:宏中的0/PATTERN可以满足我当前的需要,但我希望有一种更具体的方法来限制搜索。
回答:到目前为止,这里有几种方法,但我现在最喜欢的一种是使用Shift+V视觉选择当前行,然后使用/\%V仅在视觉选择中搜索。然后Shift+V将再次关闭可视模式。

zhte4eai

zhte4eai1#

我对宏的知识有限,但可以交互地使用Shift + V选择当前行,然后执行/\%Vsearch(请参阅http://vimdoc.sourceforge.net/htmldoc/pattern.html#/%V)。

nkoocmlb

nkoocmlb2#

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

f <letter>

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

jv2fixgn

jv2fixgn3#

/\%9lsearch

其中\%9表示行号9。
输入行号还是有点蹩脚。您可以ctrl+r=后跟一个vim表达式,然后输入来计算vim表达式并插入其输出。line('.')将返回光标所在的行。
一步到位

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

有关更多帮助,请参阅:

:h /\%l
:h i_CTRL-R
iih3973s

iih3973s4#

1.将光标放在要搜索的行上
1.用shift+v选择它
1.键入/开始搜索
1.用\%V作为你的词的前缀,例如\%Vabc仅在视觉上选定的块中搜索abc(在我们的例子中是单行)

5lhxktic

5lhxktic5#

您可以使用以下命令搜索而不进行替换

:s/PATTERN//gc

然后按n跳过替换。如果找不到模式,你甚至不会被问到。
您也可以只突出显示当前行或行范围。

gwo2fgha

gwo2fgha6#

如果您对当前行中出现的次数感兴趣,可以使用gn标记:[range]s[ubstitute]/pattern/string/[flags]

:s/pattern//gn

如果未指定范围,则默认值为当前行。
当你按第一个*在你想计数的单词上时,你可以缩写成下面的单词

:s///gn

相关问题