【发布时间】:2021-04-06 15:09:58
【问题描述】:
我的文件是这样的
a
b
c
d
我希望文件的输出是:
.a(a)
.b(b)
.c(c)
.d(d)
vim 中是否有一个单行器可以这样做?
【问题讨论】:
-
你的文件真的以空行开头吗?
-
不。我可以添加标记。
-
我修好了,没问题。
我的文件是这样的
a
b
c
d
我希望文件的输出是:
.a(a)
.b(b)
.c(c)
.d(d)
vim 中是否有一个单行器可以这样做?
【问题讨论】:
您可以使用替换:
:%s/.\+/.&(&)/
.\+ 捕获非空行。 & 是替换部分内的整个匹配项
【讨论】:
:help \+ 和 :help s/\&。
:%s/.\+/.&(&)
您可以使用全局: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
【讨论】: