自定义vim命令

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> 换到前面来.

此条目发表在vim分类目录。将固定链接加入收藏夹。

留下评论