#vi替换命令
##组成
:
+行范围
+s(替换命令)
+/(分割符)
+被替换项(查找项)
+/(分割符)
+替换项
+/(分割符)
+行内范围g
##分解 ###行范围
.
表示当前行(那个是“点”)+2
表示当前行的下面2行的那行$
表示最后一行%
表示所有行(最常用)
例子如下:10,20
表示查找范围是文件的第10行到第20行.,$
表示查找范围是文件的当前行到最后一行+2,$-5
表示查找范围是文件的(当前行的下面2行的那行)到(最后一行的上面5行的那行)%
表示查找范围是文件的所有行
###被替换项
是一个字符串,支持正则表达式,用来匹配要搜索的字符串
###替换项
是一个字符串,用来替换搜索到的字符串
###行内范围g
如果不含此项g(global),一行内替换成功第一个后,不继续替换同行里其他所匹配到的,而直接转到下一行处理
##范例
:%s/abc/def/g
把所有行里的abc替换成def
:%s/abc/def
把所有行里每一行的第一个abc替换成def
:+2,$-5s/abc/def
把 当前行下面2行的那行开始 到 倒数第5行,里面每一行的第一个abc替换成def
:2,6s/^/#
把第二行到第六行的行首(^)前面都加上一个#
:+2,10s/^#/
把 当前行下面2行的那行开始 到 第10行,如果行首有#,则替换为空(去掉#符号)