- 工信部备案号 滇ICP备05000110号-1
- 滇公安备案 滇53010302000111
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
vi/vim 中可以使用 :s 命令来替换字符串:语法为 :[addr]s/源字符串/目的字符串/[option]
全局替换命令为::%s/源字符串/目的字符串/g
[addr] 表示检索范围,省略时表示光标当前行。
如:“1,10” :表示从第1行到10行;
“%” :表示整个文件,同“1,$”;
“. ,$” :从当前行到文件尾;
s : 表示替换操作
[option] : 表示操作类型如:
g 表示全局替换;
c 表示进行确认
p 表示替代结果逐行显示(Ctrl + L恢复屏幕);
省略option时仅对每行第一个匹配串进行替换;
如果在源字符串和目的字符串中出现特殊字符,需要用”\”转义
:s/jishu/yiliu/ 替换当前行第一个 jishu 为 yiliu
:s/jishu/yiliu/g 替换当前行所有 jishu 为 yiliu
:n,$s/jishu/yiliu/ 替换第 n 行开始到最后一行中每一行的第一个 jishu 为 yiliu
:n,$s/jishu/yiliu/g 替换第 n 行开始到最后一行中每一行所有 jishu 为 yiliu
n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/jishu/yiliu/(等同于 :g/jishu/s//yiliu/) 替换每一行的第一个 jishu 为 yiliu
:%s/jishu/yiliu/g(等同于 :g/jishu/s//yiliu/g) 替换每一行中所有 jishu 为 yiliu
从上述替换命令可以看到:g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加 g ,表示只对搜索字符串的首次出现进行替换; g 放在命令开头,表示对文中所有包含搜索字符串的行进行替换操作。
:s#jishu/#yiliu/# 替换当前行第一个 jishu/ 为 yiliu/
:%s+/www/apras/+/web/apras1+ (使用+ 来替换 / ): /www/apras/替换成/web/apras1/
使用上面两种分隔符时,中间出现的/不会作为分隔符。
我们往往在替换的时候需要很小心,不能够这样就全部替换了,需要我们一个个的确认,那么我们可以加上c命令,意思就是confirm。如::%s/from/to/gc 输入这个命令之后,vim会把所有匹配的文字高亮,并会询问你 replace with to (y/n/a/q/l/^E/^Y)
y表示替换当前这个,n表示这个不要替换,a表示全部替换,
q表示退出,不替换了,l表示把当前这个替换后就退出,
^E(ctrl+e,好像大小写都可以)表示向下滚动一行,^Y表示向上滚动一行.
好了现在对于vim的文字替换功能有了更一步的了解了.其实这样的替换还是最简单的,并且很容易出错,因为它默认不是完整匹配,会把fromxxx也当成匹配项,这当然是错误的,我们可以加上\<来表示匹配一个单词的开始,\>来表示单词的结束, 命令看起来就像这个样子 :%s/\<from\>/to/g
去除所有空行(将所有空行替换为空),vim的命令为 :%s/^\n//g
顺便研究了一下 如果有多个连续的空行,想保留一个空行, vim的命令为::%s/^\n$//g
售前咨询
售后咨询
备案咨询
二维码
TOP