vi 編輯器的用法 超詳細的資料整理

2022-08-10 10:39:09 字數 4191 閱讀 6726

vi是所有unix系統都會提供的螢幕編輯器,它提供了乙個視窗裝置,通過它可以編輯檔案。當然,對unix系統略有所知的人,或多或少都覺得vi超級難用,但vi是最基本的編輯器,學好了vi,以後在unix世界裡必將暢行無阻、游刃有餘,因為其他幾種文字處理器並非unix標準配備

用法 習慣於microsoft windows下gui方式編輯器的朋友,剛剛接觸vi肯定會有「排斥反應」的,這一點只能奉勸稍安毋躁……當你習慣於vi之後,你會發現它既精確又有秩序,而且重要的是它對於要編輯的物件極富針對性。 

上圖為在cui下輸入「vi」命令後,vi被啟動的狀態。

或者輸入乙個已存在的檔案的路徑,來開啟乙個已經存在的文字檔案。(這裡以用root使用者登入系統,後輸入「vi /etc/x11/xorg.conf」為例。)

上圖為用vi開啟/etc/x11/xorg.conf後的狀態。游標位於左上第乙個字元下滑線的位置。

vi和其他編輯器最不一樣的地方莫過於它把編輯、處理等等的操作分離開來,形成性質不同的3種操作模式,他們分別為「命令模式」、「插入模式」、「ex模式」。

在windows下通常使用的記事本等等的編輯器在開啟檔案的時候,游標已經在處於輸入等待的狀態,也就是說,我們開啟檔案時就可以對檔案進行編輯。 比如,我們要輸入新的文字,或者複製一段文字,所有操作的前提,只要編輯器是被開啟的狀態,操作就是可能的。

但在vi下,為了增強對將要處理的文字的針對性,文字輸入、複製等等不同的操作,是被分離開來的,比如文字輸入的模式叫做「插入模式」,在插入模式 下,我們可以用和windows下一樣的操作方法來對文字進行輸入、編輯等等的操作,但是複製等等非編輯的操作,在插入模式下不能夠完成,而需要切換到相 應的模式下用相應的命令來完成。

在這裡,還是首先對重要的vi的模式進行說明。 

★ vi的模式(命令模式、插入模式、ex模式)

1)命令模式:

在我們剛剛通過vi新建或開啟乙個已經存在的檔案時,首先預設被讀取的模式就是「命令模式」,命令模式的特徵就是,在編輯器視窗左下角的位置上沒有任何的提示標語。

在這個模式下,如果不通過相應的命令,我們無法輸入新的文字到這個檔案中。這裡建議新接觸剛剛接觸vi的朋友在用vi開啟乙個檔案時不要處於心切而亂 按鍵盤試圖輸入一些文字到檔案中,因為命令模式所謂的「命令」,並不是我們在命令列提時下輸入的過程諸如「ls -> 回車」等等形式的命令。確切說vi命令模式下的命令,只是計算機鍵盤上的某個按鍵或某些按鍵的組合,當我們在命令模式下敲下鍵盤乙個按鍵的時候,相應命令就已經被執行。

在這裡,首先介紹移動游標的命令。通常游標的移動可以通過鍵盤右邊的方向鍵,但是由於每次移動游標,手都要大幅度的移動到鍵盤右邊,這樣使用vi是體現不出效率的,所以建議使用vi固有的命令(鍵)來控制游標的移動。

游標的移動命令如下所示:

向右移動 --> l

向左移動 --> h 

向下移動 --> j

向上移動 --> k 

如上所示,例如要向右移動游標8個字元的距離,只要在鍵盤上敲 l 鍵8次即可;向下移動3行的距離,只要在鍵盤上敲 j 鍵3次即可……也就是說,在vi命令模式中通過這幾個鍵(命令)來控制游標的移動。

其次就是文字刪除的命令。在windows下大多數編輯器在刪除文字時只要連續按[backspace]鍵即可。但由於在vi中,插入模式和命令模式是分離開來的,所以在命令模式下需要通過命令(按鍵)來刪除文字,而不是直接按[backspace]鍵。

文字刪除的命令如下所示:

刪除游標所在位置的字元 --> x

刪除游標所在的行 --> dd(敲 d 兩次) 

如上所示,例如要刪除從游標位置起向右的3個字元,只要在鍵盤上敲 x 鍵3次即可;要刪除游標所在的行,只要敲 dd (連續敲d鍵兩次),游標所在行的所有字元以及行將會被刪除。

再次,當編輯完了乙個文件,想要儲存後退出的時候的命令為「zz」(大寫、連續敲2次)。 

儲存並退出文件:

儲存當前修改並退出 --> zz 

另外,vi還有一些編輯性質的命令,一併總結如下

具有編輯性質的有用的命令:

撤銷上一步操作 --> u

移動游標到行首 --> 0 (數字0)

移動游標到行末 --> $

移動游標到當前頁最頂行 --> h

移動游標到當前頁最底行 --> l

向前翻一頁(page up) --> ctrl + f

向後翻一頁(page down) --> ctrl + b

進入輸入模式命令

i               在游標 左側輸入正文[常用]

a              在游標 右側輸入正文[常用]

o              小寫字元o, 在游標所在行的 下一行增添新行

o              大寫字元o, 在游標所在行的 上一行增添新行

i               在游標 所在行的開頭輸入正文

a              在游標 所在行的末尾輸入正文

上面介紹了幾種切換到插入模式的簡單方法。另外還有一些命令,它們允許在進入插入模式之前首先刪去一段

正文,從而實現正文的替換。這些命令包括:

s                 用輸入的正文替換游標所指向的字元[常用]

ns              用輸入的正文替換游標右側n 個字元

cw              用輸入的正文替換游標右側的字  [常用]

ncw            用輸入的正文替換游標右側的n 個字

cb              用輸入的正文替換游標左側的字  [常用]

ncb            用輸入的正文替換游標左側的 n 個字

cd              用輸入的正文替換游標的所在行[常用]

ncd            用輸入的正文替換游標下面的n 行

c$              用輸入的正文替換從游標開始到本行末尾的所有字元[常用]

c0              用輸入的正文替換從本行開頭到游標的所有字元[常用]

r            取代游標所在處的字元, 比如c3 表示將游標所在處的字元替換為字元3 [常用] 

r           取代字元直至按【esc】為止

按【esc】鍵或組合鍵【ctrl】+[ 退出輸入模式

末行模式

w              儲存檔案  [常用]

w file       將當前檔案的內容儲存到file檔案

wq           儲存檔案並退出vi編輯器[常用]

wq file    將 當前檔案的內容寫入file 檔案,並保持原有檔案的內容不變,然後退出vi編輯器(假如當前檔案內容有變動但未執行儲存操作,那麼執行該命令後不會退出vi編輯器)

r file        讀取file 檔案的內容,插入當前游標所在行的後面

e file        關閉當前檔案,並開啟新檔案file (如果當前檔案內容有變動但未儲存,則該命令不會被執行)[常用]

f file        將當前檔案重新命名為file [常用]

f               列印當前檔名稱和狀態,如檔案的行數、游標所在的行號等

q              退出vi編輯器(如果當前檔案有改動,則無法退出) [常用]

q!             強制退出vi編輯器(不儲存修改)[常用]

#              將游標移到第#行[常用]

ps:  關於行號使用的一些技巧:

一般用數值來指定絕對行號;字元「.」表示游標所在行的行號;字元「$」表示檔案最後一行的行號,例如:

.+5                  將游標從當前行往下移動5 行

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

1                     將游標移到檔案的第一行

23w file         將檔案的第23行寫入file檔案

3,5w file       將第3 行至第5 行寫入file 檔案

1,.w file        將第1 行至當前行寫入file 檔案

.,$w file        將當前行至最後一行寫入file 檔案

.,.+5w file    從當前行開始將6 行內容寫入file 檔案

1,$w file      將所有內容寫入file 檔案,相當於:w file 命令

移動游標的操作

Vi編輯器的用法

編輯器是使用計算機的重要工具之一,在各種作業系統中,編輯器都是必不可少的部件。unix及其相似的ix 作業系統系列中,為方便各種使用者在各個不同的環境中使用,提供了一系列的ex編輯器,包括 ex,edit,ed 和 vi.其中ex,edit,ed都是行編輯器,現在已很少有人使用,unix提供他們的原...

VI編輯器的用法

一 unix編輯器概述 編輯器是使用計算機的重要工具之一,在各種作業系統中,編輯器都是必不可少的部件。unix及其相似的ix作業系統系列中,為方便各種使用者在各個不同的環境中使用,提供了一系列的ex編輯器,包括 ex,edit,ed 和vi.其中ex,edit,ed都是行編輯器,現在已很少有人使用,...

Vim編輯器的詳細用法

vim編輯器是linux系統自帶的編輯器,其操作較一般的編輯器要複雜許多,但熟練運用vim會極大地提公升linux系統下編輯文字的速度。看完本文趕緊去試下吧!vim有三種模式,分別為命令模式 command mode 編輯模式 insert mode 及末行模式 last line mode 我們在...