例子
- 將dos文本變?yōu)閡nix文本
vi -b test.txt # 以二進(jìn)制格式打開(kāi),可以看到特殊字符
:%s/\r//g # 將\r替換為空
用法
-
替換當(dāng)前行中的內(nèi)容:
-
:s/from/to/ (s即substitude)
將當(dāng)前行中的第一個(gè)from玻墅,替換成to及汉。如果當(dāng)前行含有多個(gè)
from霹琼,則只會(huì)替換其中的第一個(gè) -
:s/from/to/g
將當(dāng)前行中的所有from都替換成to -
:s/from/to/gc
將當(dāng)前行中的所有from都替換成to路翻,但是每一次替換之前都
會(huì)詢(xún)問(wèn)請(qǐng)求用戶(hù)確認(rèn)此操作跪但。
-
注意:這里的from和to都可以是任何字符串履羞,其中from還可以是正則表達(dá)式。
-
2 - 替換某一行的內(nèi)容
-
:33s/from/to/g
在第33行進(jìn)行替換操作屡久。
-
-
3 - 替換某些行的內(nèi)容
:10,20s/from/to/g
對(duì)第10行到第20行的內(nèi)容進(jìn)行替換忆首。:1,$s/from/to/g
對(duì)第一行到最后一行的內(nèi)容進(jìn)行替換(即全部文本)。:1,.s/from/to/g
對(duì)第一行到當(dāng)前行的內(nèi)容進(jìn)行替換被环。:'a,'bs/from/to/g
對(duì)標(biāo)記a和b之間的行(含a和b所在的行)進(jìn)行替換糙及。其中a和b是之前用m命令所做的標(biāo)記。:%s/from/to/g
對(duì)所有行的內(nèi)容進(jìn)行替換筛欢。
替換命令的完整形式
-
:[range]s/from/to/[flags]
5.1 s/from/to/
把from指定的字符串替換成to指定的字符串浸锨,from可以是正則表達(dá)式。
5.2 [range]
有以下一些表示方法:
不寫(xiě)range : 默認(rèn)為光標(biāo)所在的行版姑。
. : 光標(biāo)所在的行柱搜。
1 : 第一行。
$ : 最后一行剥险。
33 : 第33行聪蘸。
'a : 標(biāo)記a所在的行(之前要使用ma做過(guò)標(biāo)記)。
.+1 : 當(dāng)前光標(biāo)所在行的下面一行表制。
$-1 : 倒數(shù)第二行健爬。(這里說(shuō)明我們可以對(duì)某一行加減某個(gè)數(shù)值來(lái)
取得相對(duì)的行)。
22,33 : 第22~33行夫凸。
1,$ : 第1行 到 最后一行浑劳。
1,. : 第1行 到 當(dāng)前行。
.,$ : 當(dāng)前行 到 最后一行夭拌。
'a,'b : 標(biāo)記a所在的行 到 標(biāo)記b所在的行魔熏。% : 所有行(與 1,$ 等價(jià))衷咽。 ?chapter? : 從當(dāng)前位置向上搜索,找到的第一個(gè)chapter所在的行蒜绽。( 其中chapter可以是任何字符串或者正則表達(dá)式镶骗。 /chapter/ : 從當(dāng)前位置向下搜索,找到的第一個(gè)chapter所在的行躲雅。( 其中chapter可以是任何字符串或者正則表達(dá)式鼎姊。 注意,上面的所有用于range的表示方法都可以通過(guò) +相赁、- 操作來(lái)設(shè)置相對(duì)偏 移量伍绳。 5.3 [flags] 這里可用的flags有: 無(wú) : 只對(duì)指定范圍內(nèi)的第一個(gè)匹配項(xiàng)進(jìn)行替換。 g : 對(duì)指定范圍內(nèi)的所有匹配項(xiàng)進(jìn)行替換围苫。 c : 在替換前請(qǐng)求用戶(hù)確認(rèn)奄喂。 e : 忽略執(zhí)行過(guò)程中的錯(cuò)誤。 注意:上面的所有flags都可以組合起來(lái)使用绵脯,比如 gc 表示對(duì)指定范圍內(nèi)的 所有匹配項(xiàng)進(jìn)行替換佳励,并且在每一次替換之前都會(huì)請(qǐng)用戶(hù)確認(rèn)。-