【问题标题】:How to change a string in the vim editor?如何在 vim 编辑器中更改字符串?
【发布时间】:2012-11-01 14:10:34
【问题描述】:

我正在尝试在 vim 编辑器中用斜杠替换字符串

例如:foo to abc/def/foo。有什么建议?

【问题讨论】:

    标签: vim replace find


    【解决方案1】:

    您的问题的标题和内容不匹配。

    :help pattern:help :substitute 有点压倒性,但非常非常有用,因为正则表达式是 Vim 的核心。

    Vim regular Expressions 101 是更简洁的资源。

    无论如何,给定以下示例文本:

    bar baz foo baz bar
    

    您的目标可以通过多种方式实现。以下是其中一些:

    :s/foo/\/abc\/def\/foo
    :s/foo/\/abc\/def\/&
    :s+foo+/abc/def/&
    

    几点说明:

    • 在替换部分,& 代表“匹配的文本”。如果匹配是foo,则&foo。当然,在这里使用& 而不是foo 并没有太大的好处,但是等到你有更复杂的模式......

    • 由于斜线用于分隔搜索部分和替换部分,因此您需要转义两个部分中的实际斜线才能进行替换。

    • 您可以使用许多其他符号代替斜线来分隔搜索和替换部分。当您知道需要避开太多斜线时,这非常很有用。

    【讨论】:

    • 非常感谢!!我改变了问题。我没有意识到我有这个头衔。我能够替换字符串谢谢
    • @romainl 如果答案对你有用,请“接受”它,这样它就会得到一个绿色的勾号:) 这是一种让其他用户看到哪个答案为你解决问题的方法,这对了解很有用.
    【解决方案2】:

    要在 vim 中进行字符串替换,您必须首先退出可视或插入模式。然后输入 ':' 来执行 vim 命令。 vim 中的替换命令以 '%s' 开头。把你所有的东西放在一起

    :%s/thingyouhave/thingyouwant/
    

    在您陈述的示例中,您需要使用反斜杠“\”转义文件名中的“/”。

    :%s/foo/abc\/def\/foo/
    

    另外一个有用的地方是把'gc'放在你的表达式的末尾;这将在执行每个更改之前提示您进行验证。如果您想更改表达式的某些实例或不确定您所做的是否正确,这很有用。

    :%s/foo/abc\/def\/foo/gc
    

    【讨论】:

    • 这里有很多错误。 :s// 不是“正则表达式”:它可以称为“替换”,因为 :s:substitute Ex 命令的简写。一个可以在“模式”部分使用正则表达式,但这不是强制性的(foo 在技术上是一个正则表达式,但是......哦,好吧)。当您想将替换应用于整个缓冲区时,替换仅以 %s 开头;应用在一行上,它只是:s
    • ...值得一提的是c末尾的意思是提示验证。 g 的意思是“在行上做每一次出现”,没有g 只有第一个匹配被替换。您可以单独使用gc
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 2021-01-06
    • 1970-01-01
    相关资源
    最近更新 更多