一,":substitute"的使用
:substitute 命令可以对一个指定范围的区域执行替换操作,可以简写为:s ,它的通用形式如下:
:[range]substitute/from/to/[flags] 该命令是有[range]指定范围中字符串"from"替换为"to";
例如文本的每一行中第一次出现"linux"替换为"FreeBSD":
:%s/linux/FreeBSD/ 注意:这里最后面没有加上标记,针对的是每行第一次出现的目标字符串
其中%为指定范围的所有行,如不指定返回,:s 就是作用与当前行;
默认情况下:s命令只会替换一行中第一次发现的目标字符串,要改变一行中的所有符合的字符串,可以在命令后加"g"标记来修饰;
:%s/linux/FreeBSD/g 后面加上个g才代表改变每一行所有符合的目标字符串;
其他标记符还有p(列印),c(确定)标记告诉:substitute命令要执行每个替换前请求用户确定;
如:
:%s/linux/FreeBSD/gc 全文内容linux替换成FreeBSD时都提示请求用户确定;
目标字符串from可以是任意合法的正则表达式,与搜索命令的所用的正则表达式一样;如:
:s/^linux/FreeBSD/
二,作用范围
:1,5s/this/that 作用范围为1至5行;
:8s/this/that 作用范围为第8行;
:.s/this/that 作用范围为当前行,可以省略,要使作用于当前行在命令前面加.
:1,$s/this/that 作用于所有行;
:w 这些命令可以不指定范围,针对的是整个文件
:%s 作用于所有行,等同于1,$
:.+3,$-5 作用范围从当前行其下的第3行,到倒数第6行;
:'s,'e 使用标记来指定的范围,ms标记范围的开始,me指定范围的结束;
:'<,'> 可视模式下的范围,在选定范围后按:自动出现'<,'>范围,不用自己输入;
三,标识符[flags]
g 作用于所有文件内容;
c c(确定)标记告诉:substitute命令要执行每个替换前请求用户确定;
e 没有找到目标也不会报错;
p p(列印);
转载于:https://blog.51cto.com/mylog/1420558