【问题标题】:How to get Vi to insert a column of characters?如何让 Vi 插入一列字符?
【发布时间】:2016-03-08 23:23:56
【问题描述】:

如果我有以下代码,其中点 (.) 是空格,

....def foobar():
........foo = x
........bar = y

如何让 Vim 在每一行的同一列中插入一个井号 (#) 和一个空格,如下所示:

....#.def foobar():
....#.....foo = x
....#.....bar = y

我知道我可以按 ^v 进入列插入模式,然后我可以按两次“j”键来选择同一列中的以下两行,但我读过的所有文章都说你应该然后按“I”键进入插入模式。但是,当我这样做时,我只进入第一行的插入模式,而不是所有三行。我错过了什么?顺便说一句,我不想​​计算空格并执行替换命令。我知道我能做到。必须有更简单的方法。

谢谢。

【问题讨论】:

    标签: vi macvim


    【解决方案1】:
    :1-3s/^.../^...#./
    

    从第 1 行到第 3 行(根据您自己的目的进行调整),将(s 命令)行首的三个空格替换为三个空格、一个 # 和一个额外的空格。

    【讨论】:

    • 谢谢,但同样,这不是一个好的答案。该解决方案不应该需要计算空间。必须有办法通过 Vi 的列模式来做到这一点。
    【解决方案2】:

    您将在那里尝试的每个命令都会修改实际行,或一组执行命令的行(如其他答案所示)。

    另一种方式可能是替换,例如:

    :map z /....^M4s...#^[

    (^M 是 CTRL-V M 来对 Enter 进行汉化,^[ 是 CTRL-V Escape 来结束替换)

    映射“z”后,您可以在所需的每一行中按“z”。

    【讨论】:

      猜你喜欢
      • 2016-09-30
      • 2021-09-01
      • 2012-06-14
      • 2016-02-18
      • 2020-05-26
      • 2014-06-10
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      相关资源
      最近更新 更多