【问题标题】:Is there a way to replicate same edit in every line or between marked lines in a Vim?有没有办法在 Vim 中的每一行或标记行之间复制相同的编辑?
【发布时间】:2021-04-06 15:09:58
【问题描述】:

我的文件是这样的

a
b
c
d

我希望文件的输出是:

.a(a)
.b(b)
.c(c)
.d(d)

vim 中是否有一个单行器可以这样做?

【问题讨论】:

  • 你的文件真的以空行开头吗?
  • 不。我可以添加标记。
  • 我修好了,没问题。

标签: vim one-liner


【解决方案1】:

您可以使用替换:

:%s/.\+/.&(&)/

.\+ 捕获非空行。 & 是替换部分内的整个匹配项

【讨论】:

  • :help \+:help s/\&
  • 我病了,还是有 3 个人在没有测试的情况下对这个答案投了赞成票?这只是一个错字,但正确的替换是:%s/.\+/.&(&)
  • @yolenoyer 已修复
【解决方案2】:

您可以使用全局:g 在所有行上执行. norm 命令(^[ 是用<c-v><esc> 插入的转义键):

:g/./norm diwi.^[pa()^[P

但您也可以使用q 记录您的修改,并使用@ 重复该操作,次数不限或在一定范围内。见:h recording

qq "do your stuff" q 选择你的行并运行norm @q,例如:

:'<,'>norm @q

或与 g:

:g/./norm @q

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    相关资源
    最近更新 更多