Vim 搜索和替换使用当前线作为参考点

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

:5,15s/foo/bar/g

只在第5行到第15行进行搜索和替换。如何指定“从当前行到当前行下面(或上面)10行”这样的范围?

25354 次浏览

你可以在当前位置使用 .,在下面10行使用 .+10:

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

其他一些有用的范围:

  • 例如: :%s/foo/bar/g
  • '<,'>为直观选择块的线条。这可能会得到比您想要的更多的视觉选择开始或结束在一行的中间。整条线都包括在内。
  • 从标记 a 到标记 b。
  • 从当前行到文件末尾的 .,$

:help :range给你所有的细节; 你可以做一些相当复杂的事情,例如 :'a;/pat1/-1

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

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