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

使用当前线路作为参考点进行vim搜索和更换,vim,Vim,是否有方法使用当前行作为参考来指定搜索和替换范围? 我可以使用明确的行号指定范围,如 :5,15s/foo/bar/g 仅在第5行到第15行执行搜索和替换。如何指定“从当前行到当前行下方(或上方)10行”这样的范围?您可以对当前位置使用,对下方10行使用+10: :.,.+10s/foo/bar/g 其他一些有用的范围: %用于整个文件 ”:帮助:范围提供所有详细信息;你可以做非常复杂的事情,例如,:'a/pat1/-1 对于从当前行开始的范围,一个巧妙的技巧是通过在:前面加上计数来启动命

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

:5,15s/foo/bar/g

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

您可以对当前位置使用
,对下方10行使用
+10

:.,.+10s/foo/bar/g
其他一些有用的范围:

  • %
    用于整个文件

  • :帮助:范围提供所有详细信息;你可以做非常复杂的事情,例如,
    :'a/pat1/-1

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


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

    您是否检查了
    :h range
    ?@Kent:在我最近的Vim中,不幸的是,这涉及到
    range()
    文档。但是
    :range
    就可以了。@IngoKarkat有趣的是我有7.3.1287<代码>:h范围
    将我带到那里。(同
    :h:range
    )@Kent:真有趣。对我来说,这似乎取决于Windows(
    range()
    first)和Linux(
    :range
    first),但我没有相同的版本。我将做一个记录以进一步调查。Vim的搜索和替换功能非常强大。在这里,您可以得到计算字符所需的内容,该表达式中不需要
    。因此,
    :,+10s/foo/bar/g
    是等效的。
    5:
    技巧的+1。那太好了。可以在
    :help N:
    中找到它,如果您愿意再滚动一点,也可以在
    :help:range
    下找到它。