使用当前行作为参考点进行vim搜索和替换

Eri*_*icC 39 vim

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

:5,15s/foo/bar/g
Run Code Online (Sandbox Code Playgroud)

仅在第5到第15行进行搜索和替换.如何指定"从当前行到当前行以下(或以上)10行的范围"?

Cod*_*key 84

您可以使用.当前位置,并.+10使用10行:

:.,.+10s/foo/bar/g
Run Code Online (Sandbox Code Playgroud)

其他一些有用的范围:

  • % 对于整个文件.
  • '<,'>对于视觉选择块的线.这可能比您想要的视觉选择开始或结束在一条线的中间.整条线都包括在内.
  • 'a,'b 从标记a到标记b.
  • .,$ 从当前行到文件末尾.

  • 对于那些计数字符,该表达式中不需要`.`.因此,`:,+ 10s/foo/bar/g`是等价的. (14认同)

Ing*_*kat 17

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

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

Protip:了解如何查找命令并浏览内置命令:help; 它是全面的,并提供了许多提示.你不会像其他编辑那样快速学习Vim,但如果你致力于不断学习,它将成为一个非常强大和高效的编辑器.

  • 为'5:'技巧+1.那太光滑了.它可以在`:help N:`,或者只是在`:help:range`下找到,如果你愿意再滚动一下. (2认同)