有没有办法使用当前行作为参考来指定搜索和替换范围?我可以像这样使用明确的行号来指定范围:
:5,15s/foo/bar/g
如何指定范围从当前行到当前行以下(或以上)10行,并仅对第5到15行进行搜索和替换?
有没有办法使用当前行作为参考来指定搜索和替换范围?我可以像这样使用明确的行号来指定范围:
:5,15s/foo/bar/g
如何指定范围从当前行到当前行以下(或以上)10行,并仅对第5到15行进行搜索和替换?
.
表示当前位置,使用 .+10
表示向下跳10行::.,.+10s/foo/bar/g
其他一些有用的范围:
%
表示整个文件。例如::%s/foo/bar/g
。'<,'>
表示可视选定块内的行。如果可视区域的开始或结束在一行的中间,这可能会导致包含更多内容。整行都会被包括进去。'a,'b
表示从标记 a 到标记 b。.,$
表示从当前行到文件末尾。.
。因此,:,+10s/foo/bar/g
是等效的。 - ravron:help :range
会给你所有细节;你可以做相当复杂的事情,例如:'a;/pat1/-1
。
对于从当前行开始的范围,一个巧妙的技巧是通过在:
前面加上数字来启动命令行模式:例如5:
变成:.,.+4
。
专业提示:学习如何查找命令并浏览内置的:help
;它非常全面,并提供许多技巧。你不会像其他编辑器一样快速地学习Vim,但如果你致力于持续学习,它将证明是一个非常强大和高效的编辑器。
5:
技巧,我给一个加一的赞。这很巧妙。你可以在 :help N:
找到它,或者如果你愿意滚动一点,也可以在 :help :range
下找到它。 - ravron
:h range
吗? - Kentrange()
文档,不幸的是。但是:range
可以解决问题。 - Ingo Karkat:h range
会带我到那里。(与:h:range
相同) - Kentrange()
先)和Linux(:range
先),但我没有完全相同的版本。我会记下来进一步调查。 - Ingo Karkat