Linux vim全局替换的实现方法
作者:bluewelkin
这篇文章主要介绍了Linux vim全局替换的实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
Linux vim全局替换
Linux命令:vi全局替换方法
语法为 :[addr]s/源字符串/目的字符串/[option]
全局替换命令为::%s/源字符串/目的字符串/g
[addr]: 表示检索范围,省略时表示当前行。
- 如:“1,20” :表示从第1行到20行;
- “%”:表示整个文件,同“1,$”;
- “. ,$”:从当前行到文件尾;
s :表示替换操作
[option] :表示操作类型
- 如:g 表示全局替换;
- c 表示进行确认
- p 表示替代结果逐行显示(Ctrl + L恢复屏幕);
- 省略option时仅对每行第一个匹配串进行替换;
- 如果在源字符串和目的字符串中出现特殊字符,需要用”\”转义
1. 基本的替换
- :s/vivian/sky/替换当前行第一个 vivian 为 sky
- :s/vivian/sky/g替换当前行所有 vivian 为 sky
- :n,$s/vivian/sky/替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
- :n,$s/vivian/sky/g替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
(n 为数字,若 n 为 .,表示从当前行开始到最后一行)
- :%s/vivian/sky/(等同于 :g/vivian/s//sky/)替换每一行的第一个 vivian 为 sky
- :%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky
2. 可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
- :s#vivian/#sky/#替换当前行第一个 vivian/ 为 sky/
- :%s+/oradata/apras/+/user01/apras1+(使用+ 来替换 / ): /oradata/apras/替换成/user01/apras1/
vim替换和查找
基本查找和替换
在Vim中,可以使用 :substitute(:s) 命令来查找和替换文本。
要在Vim中运行命令,必须处于 normal 模式,这是启动编辑器时的默认模式。 要从其他任何模式返回 normal 模式,只需按 Esc 键。
替换命令的一般形式如下:
:[range]s/{pattern}/{string}/[flags] [count]该命令在 [range] 中的每一行中搜索 {pattern} ,并将其替换为 {string} 。 是与命令 [count] 相乘的正整数。
如果未给出 [range] 和 [count] ,则仅替换当前行中找到的 pattern 。 当前行是光标所在的行。
range确定范围,不写默认为当前行。
% # 表示整个文件内容 . # 表示当前行 $ # 表示最后一行 m,n # 表示从第m行到第n行 ,n # 表示从当前行到第n行 n, # 表示从第n行到当前行 n # 指定行 +n # 表示当前行之后的n行
flags为替换标志位,默认为指定范围内的行的第一次匹配的位置,帮助文档:h s_flags
常用标志如下:
g: global,表示在指定范围内执行全局操作,替换所有匹配项 c: confirm,可以确认或拒绝修改 n: number,报告匹配到的次数,不替换,可用来查询匹配次数 i: 执行不区分大小写的替换 I: 执行区分大小写的替换 e: 防止替换失败时显示错误消息
单行查找后替换
- :s/{pattern}/{string}/gc单行一个一个确认替换
- :%s/{pattern}/{string}/gc范围整个页面一个一个确认替换
- :m,ns/str1/str2/替换第 n 行开始到最后一行中每一行的第一个 str1 为 str2
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
