出处:http://blog.sina.com.cn/s/blog_40cccb2f0100nwi3.html
查找命令:
要自当前光标位置向上搜索,请使用以下命令:
/pattern Enter
其中,pattern 表示要搜索的特定字符序列。
要自当前光标位置向下搜索,请使用以下命令:
?pattern Enter
按下 Enter 键后,vi 将搜索指定的 pattern,并将光标定位在 pattern 的第一个字符处。例如,要向上搜索 place 一词,请键入:
/place Enter
如果 vi 找到了 place,它将把光标定位在 p 处。要搜索 place 的其他匹配,请按 n 或 N:
n,继续朝同一方向搜索 place。
N,反方向进行搜索。
4.5.1 搜索特殊匹配
在上面的示例中,vi 查找到包含 place 的任何序列,其中包括 displace、placement 和 replaced。
要查找单个的 place,请键入该单词,并在其前后各加一个空格:
/ place Enter
要查找仅出现在行首的 place,请在该单词前加一个插字符号 (^):
/^place Enter
要查找仅出现在行尾的 place,请在该单词后加一个货币符号 ($):
/place$ Enter
使用 ^
要逐字搜索这种带有插字符号 (^) 或货币符号 ($) 的字符,请在字符前加一个反斜线 (\)。反斜线命令 vi 搜索特殊字符。
使用 $
特殊字符是指在 vi 中具有特殊功能的字符(例如 ^、$、*、/ 和 .)。例如,$ 通常表示“转至行尾”,但是,如果 $ 前紧跟一个 \,则 $ 只是一个普通的字符。
使用 \
例如,/(No \$ money) 向上搜索字符序列 (No $ money)。紧跟在 $ 之前的转义字符 (\) 命令 vi 逐字搜索货币符号。
替换命令:
vi/vim 中可以使用 :s 命令来替换字符串。以前只会使用一种格式来全文替换,今天发现该命令有很多种写法(vi 真是强大啊,还有很多需要学习),记录几种在此,方便以后查询。
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky
:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky
可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#vivian/#sky/#替换当前行第一个 vivian/ 为 sky/
:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 /): /oradata/apras/替换成/user01/apras1/
6. 其它
利用 :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 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。