Linux VI和VIM命令搜索单词和替换单词
我们在编辑文件时常常需要搜索单词和替换单词,VI编辑器也提供了搜索和替换的功能。首先按下斜杠(/),
前提是VI编辑器在一般模式下,也就是需要刚刚进入VI命令或按"ESC"后的模式,光标会自动移动到编辑器下方的命令行,用户输入搜索的字符串,按下“Enter”开始搜索,VI编辑器可能用以下三种方式相应用户的搜索。
1、当满足搜索条件的字符串出现在当前光标位置后面时,VI编辑器将光标跳转到第一个满足搜索条件的位置。
2、当满足搜索条件的字符串出现在当前光标位置前面时,VI编辑器将跳转带从开头开始的第一个满足搜索条件 的位置
3、文件中不存在满足条件的字符串时,VI编辑器提示错误信息。
下图1-1显示了VI编辑器的搜索功能,他是在/etc/services文件中搜索ssh字符串,VI编辑器下方出现斜杠(/),在斜杠后面输入待搜索的字符串。
图1-1,VI编辑器搜索功能
VI编辑器替换功能命令的基本格式如下:
:s/old_string/new_string
上述替换命令表示将第一次出现old_string替换成new_string,当然,可以在上述替换命令后面加上g 选项,表示将所有old_string替换成new_string,命令如下:
:s/old_string/new_string/g
下图1-2显示了VI编辑的替换功能,该命令将所有的NEW替换成OLD
图1-2
下表是归纳了VI编辑器的搜索和替换命令。我们可以看到,VI编辑器在替换文本时还可以指定行号的范围。
命令 | 说明 |
/word | 自当前光标位置向下搜索名字为word的字符串 |
?word | 自当前光标位置向上搜索名字为word的字符串 |
:n 1,n 2 s/word1/word2/g | 在n1行与n2行之间搜索名字为word1的字符串,并将其替换成word2 |
:1,$s/word1/word2/g | 在第一行与最后一行之间搜索名字为word1的字符串,并将其替换成word2 |