查找
1 vim a1.txt (含有字符串"data")
2 点击/,输入关键字,
3 点击enter或者esc
4 点击n是查找下一个,点击N是查找上一个,页面会显示成"?data"
:set ignorecase ,忽略大小写,输入/DATA能查到data
:set noignorecase,大小写敏感,不忽略大小写,输入/DATA不能查到data
替换
:[range]s/pattern/string/[c,e,g,i]
range | 指的是範圍,1,7 指從第一行至第七行,1,$ 指從第一行至最後一行,也就是整篇文章,也可以 % 代表。還記得嗎? % 是目前編輯的文章,# 是前一次編輯的文章。 |
pattern | 就是要被替換掉的字串,可以用 regexp 來表示。 |
string | 將 pattern 由 string 所取代。 |
c | confirm,每次替換前會詢問。 |
e | 不顯示 error。 |
g | globe,不詢問,整行替換。 |
i | ignore 不分大小寫。 |
g 大概都是要加的,否則只會替換每一行的第一個符合字串。可以合起來用,如 cgi,表示不分大小寫,整行替換,替換前要詢問是否替換(每次替换时,需要用户手动输入y或n)。
vi/vim 中可以使用 :s 命令来替换字符串。以前只会使用一种格式来全文替换,今天发现该命令有很多种写法(vi 真是强大啊,还有很多需要学习),记录几种在此,方便以后查询。
:s/data/sky/ 替换当前行第一个 data 为 sky
:s/data/sky/g 替换当前行所有 data 为 sky
:n,$s/data/sky/ 替换第 n 行开始到最后一行中每一行的第一个 data 为 sky
:n,$s/data/sky/g 替换第 n 行开始到最后一行中每一行所有 data 为 sky
n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/data/sky/(等同于 :g/data/s//sky/) 替换每一行的第一个 data 为 sky
:%s/data/sky/g(等同于 :g/data/s//sky/g) 替换每一行中所有 data 为 sky
可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#data/#sky/# 替换当前行第一个 data/ 为 sky/
:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/
1.:s/data/sky/ 替换当前行第一个 data 为 sky [光标所在的行是当前行]
:s/data/sky/g 替换当前行所有 data 为 sky
2. :n,$s/data/sky/ 替换第 n 行开始到最后一行中每一行的第一个 data 为 sky
:n,$s/data/sky/g 替换第 n 行开始到最后一行中每一行所有 data 为 sky
(n 为数字,若 n 为 .,表示从当前行开始到最后一行)
3. :%s/data/sky/(等同于 :g/data/s//sky/) 替换每一行的第一个 data 为 sky
:%s/data/sky/g(等同于 :g/data/s//sky/g) 替换每一行中所有 data 为 sky