vi是unix和linux系统上最强大和最普遍的文本编辑工具,一般而言,对于初次接触vi的朋友,往往对它的字符替换不是很熟悉,下面做一个简单的介绍:
对于字符替换,应该解决这样几个问题:
- 用谁替换谁的问题;
- 在那个范围内进行查找和替换;
- 是替换查找到的第一个还是所有匹配的项全部替换;
vi命令的各种选项就提供了这样的选择按住esc键,进入命令状态,然后按:,进入命令模式,开始输入查找和替换命令, 一般形式如下:
- ranges/source/target/g 解释:range表示要搜索的范围
- "s"这个字母表示搜索的意思,这个是不能缺少的.
- source表示要搜索的字串.
- target表示要进行替换的字串.
- g表示对于符合条件的字串全部进行替换.
其中range的取值如下:
- %表示全部的行;
- .表示当前行;
- $表示最后一行;
- 可以用具体的数字表示具体的行,如10,20等;
上述的标志可以进行组合:
如:
- .,$s/source/target/g 表示从当前行到最后一行的搜索替换;
- 又如10,20s/
- 10,$s/等等组合;
举例说明:
- :s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串
- str1 :s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1
- :.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串
- str1 :1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串
- str1 :g/str1/s//str2/g
功能同上从上述替换命令可以看到:
- g 放在命令末尾,表示对搜索字符串的每次出现进行替换;
- 不加 g,表示只对搜索字符串的首次出现进行替换;
- g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。