vi命令詳解

2021-09-30 05:57:06 字數 4793 閱讀 9085

vi

替換命令用法詳解

引用:

range

s /pat1

/pat2

/g其中

: 這是

vi的命令執行介面。

range

是命令執行範圍的指定

:百分號(

%)表示所有行 點(

.)表示當前行

美元($)表示最末行 例如

:10,20

表示第10到20

行, .,$表示當前行到最後一行,

.+2,$-5

表示當前行後兩行直到全文的倒數第五行 s

表示其後是乙個替換命令。

pat1

這是要查詢的乙個正規表示式

pat2

這是希望把匹配串變成的模式的正規表示式 g

可選標誌,帶這個標誌表示替換將針對行中每個匹配的串進行,否則則只替換行中第乙個匹配串。 /

正向查詢

/ 反向查詢1、在

vi中使用的查詢替換方法

利用: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 放在命令開頭,表示對正文中所有包含搜尋字串的行進行替換操作。2、在

shell

中使用find

結合grep

進行檔案的替換

# find ./ -exec grep str1 『{}』 /; -exec sed -i.bak s/str1/str2/g 『{}』 /;

上面命令可以在當前目錄下(包括子目錄)查詢包含

str1

的檔案,自動替換成

str2

,並且生成原始檔的

bak檔案。 vi

編輯命令

重複執行命令

數字n+命令     重複執行命令n次,如刪除15行,就在命令狀態下輸入15dd

.重複執行上一條命令

vi命令使用的一些選項及含義

-c sub-command

在對指定的檔案編輯前,先執行指定的命令sub-command .

-r filename

恢復指定的檔案filename .

-r 將指定的檔案以唯讀的方式放入編輯器中,這樣不會儲存對檔案的任何修 改。

-y number

將編輯視窗的大小設為number行。

游標移動

命令模式下,在同一行上移動的子命令:

h將游標左移一格

l將游標右移一格

j將游標下移一格

k將游標上移一格

w將游標移到下乙個小字的前面

w將游標移到下乙個大字的前面

b將游標移到前乙個小字的前面

b將游標移到前乙個大字的前面

e將游標移到下乙個小字的後面

e將游標移到前乙個大字的後面

fc把游標移到同一行的下乙個c字元處

fc把游標移到同一行的前乙個c字元處

tc把游標移到同一行的下乙個字元c的前一格

tc把游標移到同一行的前乙個字元c的後一格

number|

把游標移到遞number列上

命令模式下在行間移動的子命令:     

+或enter   把游標移至下一行第乙個非空白字元

-把游標移至上一行第乙個非空白字元 

0把游標移到當前行的第乙個字元處

$把游標移到當前行的最後乙個字元處

h把游標移到螢幕最頂端一行

l把游標移到螢幕最底端一行

m把游標移到螢幕中間

:number

游標移動到第number行

:$游標移動到最後以行

螢幕翻滾類命令

ctrl+u

向檔案首翻半屏

ctrl+d

向檔案尾翻半屏

ctrl+f

向檔案尾翻一屏

ctrl

+b  向檔案首翻一屏

nz將第n行滾至螢幕頂部,不指定n時將當前行滾至螢幕頂部

插入文字

i在游標前

i在當前行首

a游標後

a在當前行尾

o在當前行之下新開一行

o在當前行之上新開一行

r替換當前字元

r替換當前字元及其後的字元,直至按esc鍵

s從當前游標位置處開始,以輸入的文字替代指定數目的字元

s刪除指定數目的行,並以所輸入文字代替之

ncw或ncw  修改n個單詞

ncc修改指定數目的行刪除x

刪除游標所指的乙個字母

x刪除游標左邊的乙個字母

dd刪除游標所在的一行文字,同時本行文字會放到快取中

d0刪至行首

d$刪至行尾

d刪除本行游標右邊的所有文字,包括游標位置的字母

d$刪除本行游標右邊的所有文字,包括游標位置的字母

dw刪除游標右邊的乙個單詞

ndw刪除n個單詞

d1g刪除游標所在行以上的所有行

dg刪除游標所在行及游標以下所有行

複製yy

複製本行文字到快取中

number yy

複製number行到快取中貼上p

把快取中的行貼上到游標所在的下一行,

p把快取中的行貼上到游標所在的上一行

替換:s/pattern1/pattern2/g

把游標當前行的pattern1替換為pattern2

:%s/pattern1/pattern2/g

把所有行的pattern1替換為pattern2

:g/parttern1/s//parttern2

把所有行的pattern1替換為pattern2

:num1,num2 s/pattern1/pattern2/g

把num1到num2的partten1替換為partten2

被替換的文字用^表示行首,$表示行尾,如:%s/^/111/g就表示在每一行的行首插入111

檔案:r filename

把檔案filename的內容貼上在游標以下行

:w儲存當前編輯的檔名

:w filename

當filename不存在時,把修改後的檔案存為檔案filename ,當檔案filename

存在時,報錯。

!w filename

如果檔案filename存在時,把修改後的檔案儲存為檔案filename

:q退出vi ,若檔案被修改,系統不會讓使用者使用q命令退出

q!不儲存退出

x儲存退出

wq儲存退出

在多個檔案之間切換

:n開始編輯vi啟用的檔案列表中的下乙個檔案

:n filenames

指定將被編輯的新的檔案列表

在當前檔案和另外乙個檔案間切換:

:e filename

使用filename啟用vi(在vi中裝入另乙個檔案filename)

e!重新裝入當前檔案,若當前檔案有改動,則丟棄以前的改動

:e+filename

使用filename啟用vi ,並從檔案尾部開始編輯

:e+number filename

使用filename啟用vi ,並在第number行開始編輯

:e#開始編輯另外乙個檔案

查詢/pattern

向後尋找指定的pattern ,若遇到檔案尾,則從頭再開始。

?pattern   向前尋找指定的pattern ,若遇到檔案頭,則從尾再開始。

n在上次指定的方向上,再次執行上次定義的查詢。

n在上次指定的方向的相反方向上,再次執行上次定義的查詢。

/pattern/+number

將游標停在包含pattern的行後面第number行上。

/pattern/-number

將游標停在包含pattern的行前面第number行上。

%移到匹配的"()"或"{}"上。

選項設定

all列出所有選項設定情況

term

設定終端型別

ignorance

在搜尋中忽略大小寫

list

顯示製表位(ctrl+i)和行尾標誌($)

number

顯示行號

report

顯示由面向行的命令修改過的數目

terse

顯示簡短的警告資訊

warn

在轉到別的檔案時若沒儲存當前檔案則顯示no write資訊

nomagic

允許在搜尋模式中,使用前面不帶「/」的特殊字元

nowrapscan

禁止vi在搜尋到達檔案兩端時,又從另一端開始

mesg

允許vi顯示其他使用者用write寫到自己終端上的資訊

vi命令詳解

vi命令的使用 a vi檔名 文字檔案 進入vi後分三種狀態 1.ng表示讓游標到第n行 2.g表示檔案尾 3.1g表示檔案首 4.表示行首 5.表示行尾 6.x表示刪除乙個字元 7.dd表示剪下當前行 8.r表示替換乙個字元 9.cc替換一行 10.c替換從游標到行尾 11.yy表示拷貝行 12....

vi 命令詳解

vi 是visual edit 的縮寫 文字編輯器是所有計算機系統中最常用的一種工具。unix下的編輯器有ex,sed和vi等,其中,使用最為廣泛的是vi,而vi命令繁多。進入vi的命令。進入vi的命令 vi filename 開啟或新建檔案,並將游標置於第一行首 vi n filename 開啟檔...

vi 命令詳解

從shell中啟動視覺化編輯器 vi filename 指示shell啟動vi編輯器,並將引數filename傳給它。如果當前目前中存在該檔案,則vi編輯器將它解釋為要開啟的檔案 如果沒有該檔案,則vi編譯器建立新檔案 vi file1 file2 file3 shell傳遞3個引數給vi,vi將它...