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 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。
Logo

更多推荐