vi命令用法

2021-09-09 04:25:47 字數 4767 閱讀 7572

從shell中啟動視覺化編輯器

vi filename指示shell啟動vi編輯器,並將引數filename傳給它。如果當前目前中存在該檔案,則vi編輯器將它解釋為要開啟的檔案;如果沒有該檔案,則vi編譯器建立新檔案

vi file1 file2 file3shell傳遞3個引數給vi,vi將它們解釋為要開啟的檔案。可以使用:w命令儲存檔案,使用:n命令訪問下乙個檔案

vi +# filename 開啟檔案,並將游標移到指定的行。例如,命令vi +100 records從第100行開始編輯檔案records

vi +/the filename 開啟檔案,並將游標移動包含有目標字串的行。例如,命令vi +/jason friends從第1個含有字串jason的行開始編輯檔案friends

view filename 開啟檔案進行編輯,但是拒絕儲存對檔案的修改,除非使用w!命令

游標移動命令

hjkl 將游標分別向左、下、上、右移動乙個字元

0(零) 將游標移到當前行的行首

^(脫字元) 同0一樣將游標移到當前行的行首

$ 將游標移到當前行的行末

##g 將游標移到g前面的數字指定的行。例如,42g將游標移到檔案的第42行

g 將游標移到檔案的最後一行

w 將游標向前移到下乙個單詞的首字母

e 將游標向前移到下乙個單詞的最後乙個字母

b 將游標向後移到上乙個單詞首字母

- 將游標定位到上一行的行首

+ 將游標定位到下一行的行首

12| 將游標定位到當前行的第12列

l 將游標定位到螢幕的最下面一行

m 將游標定位到螢幕中間的一行

h 將游標定位到螢幕的最上面一行

」 兩個單引號將游標移到它的先前的位置

游標定位命令(上下文的)

fb 將游標向前移到當前行上的下乙個字母b(或者其他的任意指定的字元)

fb 將游標向後移到當前行上的上乙個字母b(或指定的字元)

t# 將游標移到當前行上字元#的第1個例項的右側。例如,命令tm將游標移到當前行上第1個m的右側

t# 在當前行上向左移動游標,將它移到字元#的第1個例項的前一字元

/word 將游標向前移到單詞word的下乙個例項

?word 將游標向後移到單詞word的上乙個例項

n 將游標移到前面命令/word或?word中指定模式的下乙個例項

顯示調整命令

ctrl+d 顯示檔案中的下半屏文字

ctrl+u 顯示檔案中的上半屏文字

ctrl+f 顯示檔案中的下一屏文字

ctrl+b 顯示檔案中的上一屏文字

設定顯示選項

:set number 將行號作為螢幕顯示的一部分,但是行號並不是檔案的一部分。它的縮寫形式為:set nu

:set nonumber 清除螢幕上的行號。也可以使用縮寫形式:set nonu

:set showmode 在螢幕的右下角顯示追加模式資訊

:set list 在每行的行末顯示美元符號,並用ctrl+i表示製表符

:set showmatch 在輸入)或]時,將游標移到與之匹配的(或[

:set window=value 定義螢幕上顯示的文字行的行數

:set autoindent 自動縮排。也可以使用縮寫形式:set ai

:set tabstop=value 設定顯示製表符的空格字元個數。也可以使用縮寫形式ts=value

:set wrapmargin=value 設定顯示器的右頁邊。當輸入進入所設定的頁邊時,編輯器自動回車換行

:set ignorecase 指示編輯器搜尋字串,並忽略目標中字母的大小寫

:set 顯示設定的所有選項

:set all 顯示所有可以設定的選項

文字刪除命令

dd 刪除當前游標所有的文字行

#dd 刪除#行文字

dw 從文字中刪除乙個單詞

#dw 從文字中刪除#個單詞

x 刪除游標所在的乙個字元

#x 從文字中刪除#個字元

d 刪除當前行上游標後面的部分

:#,#d 例如,:12,37d 將刪除第12~37行之間的所有文字,包括第12和37行

撤銷命令

u撤銷。恢復最近一次的文字修改操作,即使已經移動了游標。在linux系統中,再次使用撤銷命令將恢復更前一次的文字修改操作。在bsd的vi中,第2次撤銷操作將撤銷第一次撤銷操作,恢復第1次撤銷前修改的文字

:redo在linux系統中,取消撤銷操作恢復文字修改。在標準的unix系統中,第2個u命令取消第1個u命令,結果就是乙個「redo」

u 如果在修改後還沒有將游標移出當前行,則可以撤銷對當前行進行的所有的文字修改

向文字中新增文字

a(小寫) 從游標的右側開始插入文字

a(大寫) 從當前行的行末開始新增文字

i(小寫) 從游標的左側開始插入文字

i(大寫) 從當前行的行首插入文字

o(小寫) 在游標的下面開啟(或插入)乙個新行

o(大寫) 在游標的上面開啟乙個新行

:#r filename 例如,:8rreport.old讀取檔案report.old,並將它的內容放到當前檔案的第8行之後

esc 無論使用什麼命令進入了追加/插入模式,都可以通過按esc鍵離開追加模式返回到vi的命令模式

ctrl+v 允許輸入控制字元。按ctrl+v鍵後再按回車鍵將把ctrl+m插入到檔案中

在檔案中修改文字

cw 僅僅修改游標處的單詞(刪除單詞,然後進入追加模式中,以在被刪除單詞的位置新增文字)

s(小寫) 替換單個字元

s(大寫) 替換整行文字

cc 替換整行文字(同s)

r 用輸入的下乙個字元替代當前游標處的字元,並自動返回到命令模式

r 將編輯器放到覆蓋模式,用輸入的字元來逐個替換游標處的字元

c(大寫) 修改行上從游標到行末之間的文字

ct#修改行上從游標到前向第1個目標字元之間的文字。例如cty將刪除當前行上從游標到向前第1個字元y之間的所有文字,並進入追加模式以在刪除文字的位置新增文字

cf#修改行上從游標到前向第1個目標字元之間的文字(包括目標字元)。例如cfy將刪除當前行上從游標到向前第1個字元y之間(包括y)的所有文字,並進入追加模式以在刪除文字的位置新增文字

ct#修改行上從游標到後向第1個目標字元之間的文字。例如cty將刪除當前行上從游標到向後第1個字元y之間的所有文字,並進入追加模式以在刪除文字的位置新增文字

cf#修改行上從游標到後向第1個目標字元之間的文字(包括目標字元)。例如cfy將刪除當前行上從游標到向後第1個字元y之間(包括y)的所有文字,並進入追加模式以在刪除文字的位置新增文字

接出和貼上行的單詞

yy將當前行複製或接出到內在緩衝區。20yy將當前行和它後面的19行(共20行)文字複製到記憶體。目標行仍然保留在檔案中,可以使用p命令將這些記憶體中的文字貼上到檔案中

dd刪除當前行,並將它放到與yy命令使用的相同的記憶體緩衝區。目標行從檔案中刪除,但是可以使用p命令將它貼上到檔案中的其他地方

yw 將當前游標所在的單詞接出或複製到內在緩衝區。6yw命令將把當前單詞和它後面的5個(共6個)單詞複製到記憶體

dw 刪除當前的單詞,並將它放到與yw命令使用的相同的記憶體緩衝區。可以使用p命令將單詞貼上到檔案的其他地方

yt#接出從游標到向前乙個字元(不包括該字元)之間的文字。例如,ytb命令將從游標到字元b的下一例項(不包括字元b)之間的文字接出或複製到記憶體

yf#接出從游標到向前乙個字元(包括該字元)之間的文字。例如,yf:命令將從游標到字元:的下乙個例項(包括字元:)之間的文字接出或複製到記憶體

yt# 後向接出(不包括目標字元)。例如,ytn命令將從游標到字元n的後向第1個例項之

間的文字(不包括字元n)接出或複製到記憶體

yf#後向接出(包括目標字元)。例如,yfj命令將把從游標到字元n的向後第1個例項之間的文字(包括字元n)接出或複製到記憶體

p 將記憶體中的文字行貼上到檔案中游標所在行的下面,或將記憶體中的單詞貼上到檔案中游標的右側

p(大寫) 將接出或刪除的文字行貼上到檔案中游標所在行的上面。或將接出或刪除的單詞貼上到檔案中游標的左側

檔案移動命令

j 將下行文字同當前行合併成一行

:#,# move # 將指定的行移到目標位置。:12,35 move58命令將第12~35行之間的所有文字移到第58行的後面。縮寫為mo

:1,26 co 82 將第1~26行之間的所有文字複製到第82行的後面(可以選擇行號)

使用視覺化編輯器進行全域性編輯

:s /target/replacement/查詢當前行上目標字串的第1個例項並刪除,然後用字串replacement替換。只修改當前行上的第1個目標例項

:g /target/s//replacement/查詢所有行上目標字串的第1個例項並刪除,然後用字串replacement替換。修改所有行上目標的第1個例項

:#,# s/target/replacement/ 在指定的行上進行替換。例如,:7,37s/march/walk/將查詢第7~37行之間的所有文字行,並用字串walk替換每行中的第1個目標字串march。所有指定行上的第1個目標字串修改

:#,# s/target/replacement/g 在指定的行上進行全域性替換。例如,:1,$ s/fun/joyful/g將在第1行到檔案最後一行之間查詢目標字串fun的所有例項並刪除,然後用字串joyful替換。指定行上的目標字串 的所有例項都被修改

:g /target/s/replacement查詢所有行上目標字串的第1個例項並刪除,然後用字串replacement替換。所有行上的第1個目標都被修改

:#,# target/s/replacement/ 在指定的行上進行替換,例如,:7,37march

vi替換命令用法詳解

range s pat1 pat2 g 其中range 是命令執行範圍的指定 百分號 表示所有行 點 表示當前行 美元符 表示最末行 例如 10,20表示第10到20行,表示當前行到最後一行,2,5表示當前行後兩行直到全文的倒數第五行 s 表示其後是乙個替換命令。pat1 這是要查詢的乙個正規表示式...

Vi替換命令用法練習

redhat linux 9 vwware 8.0 ssh 3.2.9 以我們還必須要去掉逗號前後的所有空格。原檔案是這樣的 bill jones,hi tek corporation ca,95011 sharon lee smith,design works incorporated,ca,95...

Linux下的vi命令用法

進入vi的命令 vi filename 開啟或新建檔案,並將游標置於第一行首 vi n filename 開啟檔案,並將游標置於第n行首 vi filename 開啟檔案,並將游標置於最後一行首 vi pattern filename 開啟檔案,並將游標置於第乙個與pattern匹配的串處 vi r...