vi/vim替换操作(实际修改文本内容)
vi普通模式,即刚vi进入文件中的状态
光标会落在某一行
此时输入 😒/被替换的/替换的/
输入冒号的时候 就在最下方出现输入冒号了\
1)当前行 只替换 第一个匹配的内容(abc替换成new1)
# 初始内容(光标落在第一行)和 输入替换操作命令
# :s/***/***/
abc xyz abc xyz
abc
~
~
:s/abc/new1/
# 替换后结果
new1 xyz abc xyz
abc
~
~
2)当前行 替换所有匹配到的内容
# 替换命令 最后加上 g
# :s/***/***/g
abc xyz abc xyz
abc
~
~
:s/abc/new1/g
#
new1 xyz new1 xyz
abc
~
~
3)匹配替换所有行的abc
方式一:匹配指定行 在s前面加上 1,$表示替换第一行到最后一行的匹配内容
# :1,$s/***/***/g
abc xyz abc xyz
abc
abc
~
~
:1,$s/abc/new1/g
#
new1 xyz new1 xyz
new1
new1
~
~
4 substitutions on 3 lines
替换2,3行的
# :1,$s/***/***/g
abc xyz abc xyz
abc
abc
~
~
:2,3s/abc/new1/g
#
new1 xyz new1 xyz
new1
abc
~
~
3 substitutions on 2 lines
方式二:全文匹配,也可以用% 替换 1,$符号操作
# :%s/***/***/g
abc xyz abc xyz
abc
abc
~
~
:%s/abc/new1/g
#
new1 xyz new1 xyz
new1
new1
~
~
4 substitutions on 3 lines
4)间隔符是可以改变的
如果要替换的内容中出现特殊符号如 . 需要用到 斜杠\,这种情况下 斜杠/和\就比较混乱,容易混淆,这种情况下可以把间隔符/改成#
#
url="https://www.baidu.com/index.php"
~
~
:%s#www\.com#www\.baidu\.com#g
5)给内容加引号的操作,使用正则匹配
aaa 2008-07-0aaa bbb
ccc 2008-0-aaa2 aaa
~
~
:%s#\([0-9]\{4\}-[0-9]\{2\}-[0-9|a-z]\{4\}\)#'\1'#g
参考文档[Vim命令_Linux Vim命令:替换文本内容 (biancheng.net)](http://c.biancheng.net/linux/Vim.html#:~:text=Vim命令_Linux Vim命令:替换文本内容 1 基础替换用法 在 Vi 的普通模式下,先输入冒号(:),进入命令行模式,这是 Vi,我们假设当前行的内容是: … 3 连间隔符都可以改变 如果你要匹配和替换“http%3A%2F%2Froclinux.cn%2Findex.php”这样一个 URL,你会发现这很麻烦,正确的写法会吓到你,来看一看: %3A%s%2Fhttp%3A%2F%2Froclinux.cn%2Findex.php%2Fhttps%3A%2F%2Fwww.baidu.com%2Findex.php%2Fg )
6)如果查询的内容需要忽略大小写,则查询内容后加**\c**
aABbCc
~
~
:%s#aabbcc\c#xXYyZz#g
7)删除空行、删除字符串、删除空格
aaa
~
~
:1s/\n//g
aaa
~
~
:s/aaa//g
aaa bbb
~
~
:s/ //g
vi/vim查找操作
普通模式下,输入
/带查找内容
aaabbb
~
~
/aaa