vim 对一个目录下的txt文件中某个字符替换,非常麻烦
比如替换 bigzhu 为|bigzhu|需要如下命令:
args *.txt | argdo %s/ bigzhu /|bigzhu|/ge | update
于是是用自定义命令:
command -nargs=1 Zu :args *.txt | argdo %s/ <args> /|<args>|/ge | update
只需要输入
Zu bigzhu
即可完成 bigzhu 到|bigzhu|的替换
在将这条自定义命令放入_vimrc 中:
“自定义命令
command -nargs=1 Zu :args *.txt | argdo %s/ <args> /|<args>|/ge | update
继续完善:
command -nargs=1 Zu :args *.txt | argdo %s/ <args> /|<args>|/ge | update | argdo %s/ <args>/|<args>|/ge | update | argdo %s/<args> /|<args>|/ge | update
发现一个问题,替换出来的关键字,前面会多出一个空格,发现vim的自定义命令是倒着执行的,也就是最先执行的是:
argdo %s/<args> /|<args>|/ge | update
于是满足 <args> 的根本没机会匹配到,改为:
command -nargs=1 Zu :args *.txt | argdo %s/<args> /|<args>|/ge | update | argdo %s/ <args>/|<args>|/ge | update | argdo %s/ <args> /|<args>|/ge | update
其实没必要需要这么多argdo和update,修改为
command -nargs=1 Zu :args *.txt | argdo %s/ <args> /|<args>|/ge | %s/ <args>/|<args>|/ge | %s/<args> /|<args>|/ge | update |helptags .
因为只有一个argdo,在一个argdo里面是顺次执行的,要把 <args> 换到前面来.