vi 提供了几种定位查找一个指定的字符串在文件中位置的方法。同时还提供一种功能强大的全局替换功能。
1. 查找一个字符串
一个字符串是一行上的一个或几个字符。
为查找一个字符串,在vi命令模式下键入“/”,后面跟要查找的字符串,再按回车。vi将光标定位在该串下一次出现的地方上。键入n跳到该串的下一个出现处,键入N跳到该串的上一个出现处。
为了在文件中回头查找,使用?代替/。在此情况下,键入n跳到该串的上一个出现处,键入N跳到该串的下一个出现处
如果vi找到要求的串,光标会停留在该串第一次出现的地方。如果没有找到该串,vi会在屏幕的最后一行显示pattern not found。
查找通常是区分大小写的,如果希望vi在查找过程中忽略大小写,则键入:set ic。要使其变回默认状态,则键入:set noic。
某些特殊字符(/&!.^*$\?)对查找过程有特殊意义,因此如果这些字符出现在查找串中必须进行转意。为转意一个特殊字符,需要在该字符前面加一个反斜杠(\)。例如,要查找字符串anything?,则键入/anything\?再按回车键。
2. 精确查找字符串
在vi中可以通过在字符串中加入如下特殊字符,从而使得查找更加精确。
匹配行首,字符串要以^开头
匹配行尾,字符串要以$结束
匹配词首,字符串的串首键入\<
匹配词尾,字符串的串尾键入\>
匹配任意字符,字符串的要匹配的位置键入一个点(.)
例如,
要查找一个以search为行首的行,则键入/^search ,要查找一个以search为行尾的行,则键入/search$。
3. 替换一个字符串
替换字符串是以查找为基础,所有用于查找的特殊匹配字符都可以用于查找和替换。替换时要指定替换的范围(1,n),1 和 n 指行号,n 为 $ 时指最后一行。s 是替换命令,g 代表全程替换。例如,
:l,$s/patternl/pattern2/g——将行 l 至结尾的文字,patternl 的字符串改为 pattern2 的字符串,如无 g 则仅更换每一行所匹配的第一个字符串,如有 g 则将每一个字符串均做更换。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于