我知道,使用Vim的替换命令,您可以指定一系列行:
:12,24s/search/replace
我希望能够指定一个范围,以及正常的搜索。
:12,24/search
因为这似乎不起作用(至少在我的Vim配置上),有人知道如何实现这一点吗?
j5fpnvbx1#
Akira的回答很棒。但经过一番研究,我找到了一个替代方法。它不那么优雅,但更容易输入:
:12,24g/search/
这将给你一个恼人的提示,但它将结束在第一行的范围内包含所寻求的字符串。
3npbholx2#
:help search-range
然后再
:help /\%>l
所以本质上:
/\%>12l\%<24lsearch
c7rzv4ha3#
您真的需要行号吗?另一种方法是可视地选择范围。1.使用v、V或其他参数选择范围1.按ESC键取消选择该范围
/\%Vwhat_to_search
gojuced74#
继续使用替换命令,但将gc标志附加到原始示例中。:12,24s/search//gc个从:help search-range开始[To在一个范围内搜索]使用带有'c'标志的“:substitute”命令。示例::.,300s/Pattern//gc此命令将从光标位置开始搜索“Pattern”,直到第300行为止。在找到匹配项时,您可以键入“q”停止搜索,或键入“n”查找下一个匹配项。
gc
:12,24s/search//gc
:.,300s/Pattern//gc
5n0oy7gb5#
如果存在标记a和B,则可以使用以下公式将搜索限制在a和b之间的区域
/\%>'a\%<'bSearchText
这可以通过cmap来简化
cmap vmsab /\%>'a\%<'b cmap vmscd /\%>'c\%<'d
rfbsl7qr6#
如果要搜索到文件的结尾,请使用$:
:3,$s/pattern//gn
这将从三维线搜索到结束
mepcadol7#
使用Narrow Region plugin,我们可以打开一个临时缓冲区,其中包含需要搜索或更改的范围
:900,1000NarrowRegion
然后我们可以进行搜索
/thing
或更改并写回缓冲区
:%s/this/that/g :wq
7条答案
按热度按时间j5fpnvbx1#
Akira的回答很棒。但经过一番研究,我找到了一个替代方法。它不那么优雅,但更容易输入:
这将给你一个恼人的提示,但它将结束在第一行的范围内包含所寻求的字符串。
3npbholx2#
然后再
所以本质上:
c7rzv4ha3#
您真的需要行号吗?另一种方法是可视地选择范围。
1.使用v、V或其他参数选择范围
1.按ESC键取消选择该范围
/\%Vwhat_to_search
在先前选择的范围中搜索“what_to_search”。这是较小的类型,但不是直接你所要求的;- )
请参阅:帮助%V
[编辑]太好了,我刚刚了解到,搜索的范围可以在搜索后通过选择另一个范围来改变,通过按ESC键再次取消选择这个范围,然后按n键重复搜索。Vim真的总是很好的惊喜。
gojuced74#
继续使用替换命令,但将
gc
标志附加到原始示例中。:12,24s/search//gc
个从
:help search-range
开始[To在一个范围内搜索]使用带有'c'标志的“:substitute”命令。
示例:
:.,300s/Pattern//gc
此命令将从光标位置开始搜索“Pattern”,直到第300行为止。在找到匹配项时,您可以键入“q”停止搜索,或键入“n”查找下一个匹配项。
5n0oy7gb5#
如果存在标记a和B,则可以使用以下公式将搜索限制在a和b之间的区域
这可以通过cmap来简化
rfbsl7qr6#
如果要搜索到文件的结尾,请使用$:
这将从三维线搜索到结束
mepcadol7#
使用Narrow Region plugin,我们可以打开一个临时缓冲区,其中包含需要搜索或更改的范围
然后我们可以进行搜索
或更改并写回缓冲区