vi編輯器之問答

2021-06-22 02:53:15 字數 4438 閱讀 8166

本文以問答的形式對vi編輯器進行認識、熟悉和使用。適合vi初學者、入門者閱讀。更多vi深入的東西請參考其它文件。

vi 編輯器是visual inte***ce的簡稱,是linux和unix上最基本的文字編輯器。能對文字進行輸出、刪除、查詢、替換、塊操作等多種操作,類似與windows上的notepad(但是vi是終端上的程式,沒有圖形介面)。它沒有選單,只有命令,且命令繁多(這也是很多初學者覺得很難的地方)。同時也注意的是它並不像word或wps那樣能對字型、格式、段落等其他屬性進行編排。

上圖是centos6.5上的vi(m)編輯器(直接在終端上輸入命令vi即可開啟)

為什麼我們要使用vi進行文字編輯,換句話說vi編輯器為什麼受大家歡迎。我總結了下,有幾個原因:1.如上面所說:它是unix/linux上面基本的編輯器,安裝完系統後就可以直接使用它,不用單獨安裝;2.它是非圖形介面的編輯器(這哪能說是它的優點呢),就正是因為它是終端型的編輯器,它才能在unix/linux伺服器(沒有圖形介面的作業系統,或者遠端連線到linux/unix)上發揮作用,其它圖形介面的編輯器如gedit、kate等此時都是渣渣;3.vi編輯器本身的強大,全鍵盤命令操作、有很多快捷鍵對文字進行操作、支援自定義設定;4.使用熟練後,你會發現它比其它編輯器gedit等更便捷、高效;5.因為很多牛人大神都用它(扯遠老)。

上面我們對vi編輯器有了乙個初步的認識,接下來我們將對如何使用vi進行提問。

很多朋友在使用vi file.txt開啟檔案後,不知道怎麼輸入或修改內容。這是因為vi編輯器有兩種工作模式:command(命令)模式和insert(插入)模式),vim還多一種visual(可視)模式。而我們首次開啟檔案時,預設的是command模式,因此無法進行編輯修改增加內容。

通過下面的輸入即可進入insert模式:

i    在游標之前插入;  

a    在游標之後插入;  

i    在游標所在行的行首插入;  

a    在游標所在行的行末插入;

o    在游標所在的行的上面插入一行;  

o    在游標所在的行的下面插入一行;  

s    刪除游標後的乙個字元,然後進入插入模式;  

s    刪除游標所在的行,然後進入插入模式;

很多時候開啟了檔案後,不知道怎麼退出vi編輯器返回到終端上。

退出檔案 需要在命令模式中輸入命令才可進行相應的儲存、退出相關操作。

按 esc 鍵 進入命令模式,然後輸入下面的命令可以分別達到不同的效果:

:w    儲存;

:w    filename 另存為filename; 

:wq!    儲存退出;  

:wq!    filename 注:以filename為檔名儲存後退出; 

:q!    不儲存退出; 

:x    應該是儲存並退出 ,功能和:wq!相同

上面的w表示write,q表示quit。!表示強制的意思,比如:wq!表示強制儲存退出。

通過上面的學習,我們知道vi有三種模式,他們分別是:

command(命令)模式,用於輸入命令(預設是該模式,鍵入 esc 也可進入該模式);

visual(可視)模式,用於視化的的高亮並選定正文(這個是vim獨有的模式,在命令模式下,輸入 v 即可進入該模式);

我們常用方向鍵來上下左右移動游標,要是你知道了下面的方法來控制游標,這是一件多麼快樂的事情。

首先習慣性的 按一下 esc 進入命令模式

j 向下移動一行;  

k 向上移動一行;  

h 向左移動乙個字元;  

l 向右移動乙個字元;

(backspace 也可以向前移動乙個字元)

上面的幾個命令,大家覺得不能體現出什麼優勢 就和 方向鍵的功能一樣,其實當你使用習慣時,會發現在輸入文字時,右手不用怎麼移動(不需要移動到遙遠的方向鍵的位置)就可以移動游標了。下面的技巧,你會更喜歡..

在h、j、k、l動作命令的前面加上數字可以疊加操作,比如 3j,表示向下移動3行。

在插入模式中,可以使用backspace來刪除字元。但是這樣刪除很慢,習慣性的 按 esc進入命令模式,然後通過命令(h、j、k、l)迅速的移動到你需要操作的地方,使用下面的命令進行刪除內容:

x 乙個字元;  

#x 刪除幾個字元,#表示數字,比如3x;  

dw 刪除乙個單詞;  

#dw 刪除幾個單詞,#用數字表示,比如3dw表示刪除三個單詞;  

dd 刪除一行; 

#dd 刪除多個行,#代表數字,比如3dd 表示刪除游標行及游標的下兩行;  

d$ 刪除游標到行尾的內容;  

j 清除游標所處的行與上一行之間的空格,把游標行和上一行接在一起;

往往在對文字編輯時,總有犯錯的時候,這是我們如果使用 ctrl+z是不能撤銷操作的,正確的方法是:按esc鍵(進入命令模式),再按 u 鍵 即可撤銷一次,多按幾次 u 就多撤銷幾次。

記住是在命令模式下輸入小寫 u 哦...

說到複製貼上,我們也會想到剪貼,上面7說的刪除操作其實就是剪貼的功能。比如dd後當前行被刪除了並放入了vi的剪貼區中,然後移動游標到相應的地方,輸入p即可把剛刪除的內容貼上到游標處。

p 在游標之後粘帖;  

shift p 在游標之前粘帖;

下面舉個例,

比如我們想把乙個文件的第3行複製下來,然後帖到第5行的後面,我們應該怎麼做呢?  、

有兩種方法;  

第一種方法:  

先把第3行刪除,把游標移動到第3行處,然後用dd動作,接著再按一下shift p鍵。這樣就把剛才刪除的第3行帖在原處了。--複製

接著我們再用k鍵移動游標到第5行,然後再按一下p鍵,這樣就把第3行的內容又帖到第5行的後面了;--貼上

第二種方法:  

進入命令模式移動游標到第3行,在進入可視模式(按esc鍵,然後按v鍵),移動游標選中第3行的內容,然後按y鍵複製;再移動指標到第5行,最後按p鍵; 

所以複製和貼上操作,是命令模式、插入模式及可視模式的綜合運用,我們要學會各種模式之間的切換,要常用esc鍵,更為重要的學會在命令模式下移動游標。

很多編輯器都有顯示行號的功能,當然vi也有這個功能。

在命令模式下輸入:

:set number

即可顯示行號

命令模式

/pattern:向下查詢pattern匹配字串

?pattern:向上查詢pattern匹配字串

使用了查詢命令之後,使用如下兩個鍵快速查詢:

n:按照同一方向繼續查詢

n:按照反方向查詢

字串匹配

pattern是需要匹配的字串,例如:

/abc#查詢abc

/ abc #查詢abc單詞(注意前後的空格)

除此之外,pattern還可以使用一些特殊字元,包括(/、^、$、*、.),其中前三個這兩個是vi與vim通用的,「/」為轉義字元。

/^abc#查詢以abc開始的行

/test$#查詢以abc結束的行

//^test#查詢^tabc字串

命令模式

: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      #功能同上

例如::s/vivian/sky/         #替換當前行第乙個 vivian 為 sky

:s/vivian/sky/g     #替換當前行所有 vivian 為 sky

:n,$s/vivian/sky/     #替換第 n 行開始到最後一行中每一行的第乙個 vivian 為 sky

:n,$s/vivian/sky/g     #替換第 n 行開始到最後一行中每一行所有 vivian 為 sky

(n 為數字,若 n 為 .,表示從當前行開始到最後一行)

:%s/vivian/sky/        #(等同於 :g/vivian/s//sky/) 替換每一行的第乙個 vivian 為 sky

:%s/vivian/sky/g    #(等同於 :g/vivian/s//sky/g) 替換每一行中所有 vivian 為 sky

同時:可以使用 #或+ 作為分隔符,此時中間出現的 / 不會作為分隔符

:s#vivian/#sky/#         替換當前行第乙個 vivian/ 為 sky/

:%s+/oradata/apras/+/user01/apras1/+ (使用+ 來 替換 / ): /oradata/apras/替換成/user01/apras1/

請參考: 

Linux之vi編輯器

在該模式中,可以輸入命令來執行許多種功能。控制螢幕游標的移動,字元 字或行的刪除,移動複製某區段及進入編輯模式,或者到尾行模式。游標移動 字元級 上 k 下 j 左 h 右 l 鍵 單詞級 w word下個單詞首字母 b before上 本 個單詞首字母 e end下 本 個單詞尾字母 行級 定位到...

linux之vi編輯器

vi簡介 1.vi是一種廣泛存在於各種unix和linux系統中的文字編輯程式。2.vi不是排版程式,只是乙個純粹的文字編輯程式。3.vi是全螢幕文字編輯器,它沒有選單,只有命令。4.vi不是基於視窗的,所以,這個多用途編輯程式可以用於在任何型別的終端上編輯各式各樣的檔案。5.vi的功能十分強大,但...

linux之vi編輯器

vi是一種廣泛存在於各種unix和linux系統中的文字編輯程式。vi不是排版程式,只是乙個純粹的文字編輯程式。vi是全螢幕文字編輯器,它沒有選單,只有命令。vi不是基於視窗的,所以,這個多用途編輯程式可以用於在任何型別的終端上編輯各式各樣的檔案。vi的功能十分強大,但是命令繁多,熟練掌握起來有一定...