VPS服务器vim字符串替换及技巧
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/\/to/g
去除所有空行(将所有空行替换为空),vim的命令为 :%s/^\n//g
顺便研究了一下 如果有多个连续的空行,想保留一个空行, vim的命令为::%s/^\n$//g
购买使用一诺网络日本vps,可以极大降低初创企业、中小企业以及个人开发者等用户群体的整体IT使用成本,无需亲自搭建基础设施、简化了运维和管理的日常工作量,使用户能够更专注于自身的业务发展和创新。日本vps低至129元/月,购买链接:https://www.enuoidc.com/vpszq.html?typeid=10