我知道使用Vim的替换命令可以指定一系列行:
:12,24s/search/replace
Run Code Online (Sandbox Code Playgroud)
我希望能够指定具有正常搜索的范围.就像是
:12,24/search
Run Code Online (Sandbox Code Playgroud)
由于这似乎不起作用(至少在我的Vim配置上),有人知道如何实现这一点吗?
谢谢.
Car*_*icz 37
akira的答案很棒.但经过一番挖掘,我找到了另一种选择.它不是那么优雅,但更容易输入:
:12,24g/search/
Run Code Online (Sandbox Code Playgroud)
这会给你一个恼人的提示,但它会在包含所搜索字符串的范围内的第一行结束.
aki*_*ira 33
:help search-range
Run Code Online (Sandbox Code Playgroud)
然后
:help /\%>l
Run Code Online (Sandbox Code Playgroud)
基本上:
/\%>12l\%<24lsearch
Run Code Online (Sandbox Code Playgroud)
Hab*_*abi 21
你真的需要行号吗?另一种方法是可视地选择范围.
/\%Vwhat_to_search以搜索先前选择的范围中的"what_to_search".这是键入的较小,但不是直接你要求的;-)
请参阅:help%V
[编辑]很好,我刚刚了解到搜索范围可以通过选择另一个范围进行搜索后更改,再次通过按ESC并按n重复搜索来取消选择此范围.Vim真的总是很好的惊喜.
mic*_*ael 16
继续使用替换命令,但将gc标志附加到原始示例.
:12,24s/search//gc
从 :help search-range
[要在范围内搜索]使用带有'c'标志的":substitute"命令.
例:
:.,300s/Pattern//gc
该命令将从光标位置搜索,直到第300行为"Pattern".在比赛中,您可以输入'q'来停止,或者'n'来找到下一场比赛.
小智 5
如果有标记说 a 和 b,那么搜索可以限制在 a 和 b 之间的区域使用
/\%>'a\%<'bSearchText
Run Code Online (Sandbox Code Playgroud)
这可以用 cmap 简化
cmap vmsab /\%>'a\%<'b
cmap vmscd /\%>'c\%<'d
Run Code Online (Sandbox Code Playgroud)