vi是个非常好用有用的linux 文本编辑工具,而文本替换也是非常常用的功能。
下面是一些,基本的命令格式:
:[range]s/pattern/string/[c,e,g,i]
参数详情:
range | 指的是範圍,1,7 指從第一行至第七行,1,$ 指從第一行至最後一行,也就是整篇文章,也可以 % 代表。 % 是目前編輯的文章,# 是前一次編輯的文章。 |
pattern | 就是要被替換掉的字串,可以用 regexp 來表示。 |
string | 將 pattern 由 string 所取代。 |
c | confirm,每次替換前會詢問。 |
e | 不顯示 error。 |
g | globe,不詢問,整行替換。 |
i | ignore 不分大小寫。 |
- %s/s1/s2/ 用字符串s2每行替换s1的第一个字符串s1
如:
hello ok
hello hello ok
输入命令 :%s/hello/gogo
会变成:
gogo ok
gogo hello ok
- %s/s1/s2/gc 用字符串s2每行替换s1的所有字符串s1
如:
hello ok
hello hello ok
输入命令 :%s/hello/gogo
会变成:
gogo ok
gogo gogo ok
但是:系统会提示你,replace with gogo (y/n/a/q/l/^E/^Y)? 输入y即可替换
- :n,$s/s1/s2/ 用字符串s2 替换从n行开始到最后一行,每行的第一个字符串s1
- :n,$s/s1/s2/gc 用字符串s2 替换从n行开始到最后一行,所有字符串s1
- :s/s1/s2 用字符串s2 替换当前行开始到最后一行,第一个字符串s1
- :s/s1/s2/gc 用字符串s2 替换当前行开始到最后一行,所有字符串s1
但是系统会给提示 replace with gogo (y/n/a/q/l/^E/^Y)? 输入y即可替换
Other:
删除多余的空格要删除这些每行后面多余的空格,可以执行如下命令::%s/\s\+$//命令前面指明范围是 “%”,所以这会作用于整个文件。”substitute” 命令的匹配模式是“\s\+$”。这表示行末($)前的一个或者多个(\+)空格(\s)。替换命令的 “to” 部分是空的:”//”。这样就会删除那些匹配的空白字符。