在工作中常常需要对成百上千个纯文本进行批量替换操作,经过多次试验,我认为使用VIM是最好的办法。
我们需要用到的是VIM的args和 argdo 两个命令。
args的用处是把需要进行批量操作的文件标记出来。例如:
args d:/a/*.txt args d:/a/**/*.txt
以上示例中的第一个是把D盘a目录下的所有纯文本文件作上标记,第二个则包括子目录。
在VIM中可以使用pwd命令查看VIM的当前目录,可以使用cd命令改变当前目录的位置。例如:
cd d:/a/
args会找到指定目录下的所有指定类型的文件并以编辑第一个。现在可以对所有的文件进行同一个替换操作。
:argdo %s//<x_cnt/>/x_counter/ge | update
“:argdo”命令以另一个命令为参数。该命令将对所有待编辑的文件都执行一次。
“%s”替换操作将施于所有行上。它通过”/<x_cnt/>”查找”x_cnt”。其中”/<“和”/>”使得只有完整的单词会被匹配,这样”px_cnt”和”x_cnt2″中的x_cnt才可以免遭毒手。
替换操作的标志”g”使得每行中的全部”x_cnt”都被替换。标志”e”则用于避免某些文件中一个”x_cnt”都找不到时的错误消息。否则的话”:argdo”命令遇到这些错误就会终止整个操作。
“|”用来分隔两个命令。后面的”update”命令会在文件有改变时进行保存。如果没有一个”x_cnt”被替换为”x_counter”那就不进行任何操作。
在实际操作中还有一点小技巧,那就是如何避免在操作中频繁出现“请按Enter或其他命令继续”以及出现“更多”的提示而需要按空格键继续,如果要操作的文件数目很多,频繁地按回车或空格键会把人整疯的。
在vimrc文件中作如下设定:
set nomore
打开more选项,列表消息会在全屏填满时暂停,通过nomore选项关闭就不会有暂停,列表消息会继续进行直到结束为止。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/98605.html