vi 替換 刪除 修改 操作

2021-08-31 14:18:29 字數 3572 閱讀 2678

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

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

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

www.qdtianquan.com

:0,$d   刪除所有內容

:%s/r//g 刪除dos方式的回車^m

:%s= *$== 刪除行尾空白

:%s/^(.*)n1/1$/ 刪除重複行

:%s/^.pdf/new.pdf/ 只是刪除第乙個pdf

:%s/// 又是刪除多行注釋(咦?為什麼要說「又」呢?)

:g/s*^$/d 刪除所有空行 :這個好用有沒有人用過還有其他的方法嗎?

:g!/^dd/d 刪除不含字串'dd'的行

:v/^dd/d 同上 (譯釋:v == g!,就是不匹配!)

:g/str1/,/str2/d 刪除所有第乙個含str1到第乙個含str2之間的行

:v/./.,/./-1join 壓縮空行

:g/^$/,/./-j 壓縮空行

ndw 或 ndw 刪除游標處開始及其後的 n-1 個字元。

d0 刪至行首。

d$ 刪至行尾。

ndd 刪除當前行及其後 n-1 行。

x 或 x 刪除乙個字元。

ctrl+u 刪除輸入方式下所輸入的文字。

^r 恢復u的操作

j 把下一行合併到當前行尾

v 選擇一行

^v 按下^v後即可進行矩形的選擇了

aw 選擇單詞

iw 內部單詞(無空格)

as 選擇句子

is 選擇句子(無空格)

ap 選擇段落

ip 選擇段落(無空格)

d 刪除到行尾

x,y 刪除與複製包含高亮區

dl 刪除當前字元(與x命令功能相同)

d0 刪除到某一行的開始位置

d^ 刪除到某一行的第乙個字元位置(不包括空格或tab字元)

dw 刪除到某個單詞的結尾位置

d3w 刪除到第三個單詞的結尾位置

db 刪除到某個單詞的開始位置

dw 刪除到某個以空格作為分隔符的單詞的結尾位置

db 刪除到某個以空格作為分隔符的單詞的開始位置

d7b 刪除到前面7個以空格作為分隔符的單詞的開始位置

d) 刪除到某個語句的結尾位置

d4) 刪除到第四個語句的結尾位置

d( 刪除到某個語句的開始位置

d) 刪除到某個段落的結尾位置

d{ 刪除到某個段落的開始位置

d7{ 刪除到當前段落起始位置之前的第7個段落位置

dd 刪除當前行

d/text 刪除從文字中出現「text」中所指定字樣的位置,

一直向前直到下乙個該字樣所出現的位置(但不包括該字樣)之間的內容

dfc 刪除從文字中出現字元「c」的位置,一直向前直到下乙個該字元所出現的位置(包括該字元)之間的內容

dtc 刪除當前行直到下乙個字元「c」所出現位置之間的內容

d 刪除到某一行的結尾

d$ 刪除到某一行的結尾

5dd 刪除從當前行所開始的5行內容

dl 刪除直到螢幕上最後一行的內容

dh 刪除直到螢幕上第一行的內容

dg 刪除直到工作快取區結尾的內容

d1g 刪除直到工作快取區開始的內容

vi 刪除操作

dd 單行刪除 m,nd m行到n行刪除 m,d m行到結尾刪除 g 字元 d 刪除含有字元的所有行 g d 刪除空白行 s n s g 刪除空白行 g n s g 刪除空白行 s n g 刪除多行空白行,保留一行空白行 g d 刪除全文 x 刪除當前字元 dw 刪除當前字 dd 刪除當前行 d 刪...

vi刪除操作大全

0,d 刪除所有內容 d 刪除所有內容 s r g 刪除dos方式的回車 m s s 刪除行尾空白 s n 1 1 刪除重複行 g s d 刪除所有空行 這個好用有沒有人用過還有其他的方法嗎?g dd d 刪除不含字串 dd 的行 v dd d 同上 譯釋 v g 就是不匹配!g str1 str2...

Vi刪除操作大全

s r g 刪除dos方式的回車 m s 刪除行尾空白 s n1 1 刪除重複行 s pdf new.pdf 只是刪除第乙個pdf s 又是刪除多行注釋 咦?為什麼要說 又 呢?g s d 刪除所有空行 這個好用有沒有人用過還有其他的方法嗎?g dd d 刪除不含字串 dd 的行 v dd d 同上...