VI批量替換文本,多行刪除,複製,移動

:n1,n2 m n3    移動n1-n2行(包括n1,n2)到n3行之下; 測試

:n1,n2 co n3    複製n1-n2行(包括n1,n2)到n3行之下; spa

:n1,n2 d           刪除n1-n2行(包括n1,n2)行; blog

vi替換使用規則:
:g/s1/s/s2/s3/g
第一個g表示對每個包括s1的行都進行替換,第二個g表示對每一行包括s1的行全部的s2都用s3替換
s表示替換,s2是要被替換的字符串,他能夠和s1相同(若是相同的話用//代替),s3是替換字符串
在vi界面下使用命令 :%s#/usr/bin#/bin#g 能夠把文件中全部路徑/usr/bin換成/bin。其中「#」是轉義字符,代表其後的「/」字符是具備實際意義的字符,不是分隔符。


s/str1/str2/ 用字符串 str2 替換行中首次出現的字符串 str1
:s/str1/str2/g 用字符串 str2 替換行中全部出現的字符串 str1
:s/str1/str2/gi 用字符串 str2 替換行中全部出現的字符串 str1,在查找時不區分大小寫
字符串


.,$ s/str1/str2/g 用字符串 str2 替換正文當前行到末尾全部出現的字符串 str1
:1,$ s/str1/str2/g 用字符串 str2 替換正文中全部出現的字符串 str1
:g/str1/s//str2/g 功能同上
:%s/str1/str2/g 功能同上
:g/foobar/s/bar/baz/g 首先搜尋foobar,而後把它變成foobaz. 它沒有改變 jailbars, 而其餘的一些命令可能會改變jailbars.
:%s/str1/str2/gc 替換全文全部符合的單詞並讓用戶確認
:g/str1/s//str2/gi 用字符串 str2 替換正文中全部出現的字符串 str1,在查找時不區分大小寫,此命令沒有下面的嚴格,經測試顯示,不能徹底作到在查找時忽略大小寫
:%s/str1/str2/gi 用字符串 str2 替換正文中全部出現的字符串 str1,在查找時不區分大小寫,在查找時能夠徹底作到忽略大小寫
:10,20s/^/ / 將第10行至第20行資料的最前面插入5個空白
:%s/$/str/g 在整個文件每一行的行尾添加「str」 
:3,7s/str1/str2/g僅替換文件中的第3行到第7行中的「str1」成「str2」
:%s/:.*//g 刪除/etc/passwd中用戶名後面的從冒號開始直到行尾的全部部分(前提是已經打開了/etc/passwd文件)從上述替換命令能夠看到:g 放在命令末尾,表示對搜索字符串在光標所在行的每次出現進行替換;不加 g,表示只對搜索字符串的首次出現進行替換;g 放在命令開頭,表示對正文中全部包含搜索字符串的行進行替換操做。上面的命令中的/只是起分隔做用,也能夠用其餘的字符代替。另外,能夠在正規式裏用\(和\)來剝離一個序列。例如: 

有些字符域使用得很頻繁. Vim 爲這些字符域提供了預約義域:
項 匹配 至關於
\d 數字 [0-9]
\D 非數字 [^0-9]
\x 十六進制數字 [0-9a-fA-F]
\X 非十六進制數字 [^0-9a-fA-F]
\s 空白字符 [ ] ( 和 )
\S 非空白字符 [^ ] (非 和 )
\l 小寫字母 [a-z]
\L 非小寫字母 [^a-z]
\u 大寫字母 [A-Z]
\U 非大寫字母 [^A-Z]
& 全部查找時匹配到的東西 
\[Ee] 更改大小寫的選擇區域的終點

:%s/\s\+$// 刪除行尾多餘的空格
命令前面指明範圍是「%」,因此這會做用於整個文件。「substitute」命令的樣式是「\s\+$」。這表示行末($)一個或者多個(\+)空格(\s)。:g/\(foo\)\(bar\)/s/\2/\1baz/g 將foobar替換成foobaz
it

轉載:http://baikgd.blog.163.com/blog/static/35402495200910134325116/

相關文章
相關標籤/搜索