命令模式下
---全局替换
:%s/旧文本/新文本/g
:%s/旧文本/新文本/gc ###交互模式(y-yes,n-no,a-all,q_quit,l-last)
---可视区域替换(单行替换)
:s/旧文本/新文本/g
:s/旧文本/新文本/gc ###交互模式(y-yes,n-no,a-all,q_quit,l-last)
说明:
:%s/旧文本/新文本/g 三个“/”成组出现是分隔符,分割替换前和替换后的字符,但不是必须使用“/”的,用三组一样的符号都可以。如%%%、@@@,这个好处是当内容含有/符号时(比如文件路径)不需要进行转义
如将某个文档里面 字符串“bi/user/zhj/test”替换成“bi/user/zhj/maint ” ,写法如下:
:%s@bi/user/zhj/test@bi/user/zhj/maint@g -----三个@号成组出现代表分割符号
如果非要转义 写法如下:
:%s/bi\/zhj\/test/bi\/user\/zhj\/maint/g
解释: ‘\’代表转义,看起来很乱也容易错,如果不是非要转义的话建议用@或其他特殊符号
另外,如果不用vi直接将文档内容直接替换,可以用sed命令如下:
sed -i "s/旧内容/新内容/g" 文件名
示例:将 xxxx.txt里面含有“北京”的字符替换成“上海”
sed -i "s/北京/上海/g" xxxx.txt
欢迎大家一起批评指正,一起交流、一起进步~