我想转此:
A
a
a
B
b
b
进入这个:
a/!
a/!
b/!
b/!
所以我写了一个自定义函数:
function PrepareDic()
:g/[A-Z]/d | :%s/$/\/!/g
endfunction
但是当我做:PrepareDic()
时,我最终会得到类似的东西:
a/!/!
a/!/!
b/!/!
b/!/!
我做错了什么?
答案 0 :(得分:4)
由于您编写了一个函数,因此您不需要链接这样的命令。 (像这样的链接命令也没有达到预期的效果。)
全局命令不能用bar分隔。相反,它正在使用d | :%s/$/\/!/g
在每一行上运行[A-Z]
。这显然是错误的。要解决此问题,您只需在全局命令(这是您的意图)之后运行substitute命令。由于有两行大写字母,因此替换完成两次。所以你得到/!/!
添加每一行的结尾。
所以以下应该是固定功能。
function PrepareDic()
g/[A-Z]/d
%s/$/\/!/g
endfunction
如果您真的想使用bar分隔命令,则需要将全局传递给exec
。然而,这并非必要。
exec 'g/[A-Z]/d' | %s/$/\/!/g