64

有没有办法使用当前行作为参考来指定搜索和替换范围?我可以使用明确的行号来指定范围,例如

:5,15s/foo/bar/g

仅在第 5 到 15 行上进行搜索和替换。如何指定一个范围,例如“从当前行到当前行下方(或上方)的 10 行”?

4

2 回答 2

130

您可以.用于当前位置,以及.+10向下 10 行:

:.,.+10s/foo/bar/g

其他一些有用的范围:

  • %对于整个文件。示例::%s/foo/bar/g
  • '<,'>对于视觉选择块的行。这可能会让你得到比你想要的更多的视觉选择在一行的中间开始或结束。包括整条线。
  • 'a,'b从标记 a 到标记 b。
  • .,$从当前行到文件末尾。
于 2013-08-02T15:15:37.773 回答
27

:help :range为您提供所有详细信息;你可以做相当复杂的事情,例如:'a;/pat1/-1.

对于从当前行开始的范围,一个巧妙的技巧是通过在前面:加上一个计数来启动命令行模式:例如5:变成:.,.+4.

Protip:学习如何查找命令和导航内置的:help;它很全面,并提供了许多提示。你不会像其他编辑器那样快速学习 Vim,但如果你致力于持续学习,它将证明是一个非常强大和高效的编辑器。

于 2013-08-02T15:19:04.777 回答