Vi 讀寫操作

2021-08-26 12:57:33 字數 4212 閱讀 4283

長期以來,windows網路管理人員使用edit,記事本或者wordpad來編輯文字檔案和手寫檔案。對unix作業系統而言,大多數unix系統都具有各自型別的編輯器,但是實際使用的工具不盡相同,這取決於使用的unix系統。當前,一些編輯器甚至已經成為微軟word強有力的競爭對手,比如sun microsystems。但是,所有unix作業系統機器上都安裝有vi視覺化編輯器。一旦掌握vi的使用技巧,你就可以在所有的unix作業系統(包括linux作業系統)中隨意編輯檔案。

vi為何物?

乍一看,vi除了全螢幕可視外就沒有什麼可值得稱道。但是, 她卻是乙個功能非常強大的編輯器,而且可以滿足你需要的任何操作。vi可以在操作的時候讓你編輯和瀏覽整個檔案。以前的許多編輯器,比如ed都是行編輯器,即每次只能編輯和瀏覽一行文字。因此相比於過去的unix編輯器,vi更加便於整個檔案的瀏覽。

很多unix作業系統都集中多個不同的命令列功能,比如nroff和troff等檔案處理工具。與微軟的word一樣,這些命令列功能可以編輯出不同格式和風格的檔案。我親自使用了這些工具來編寫我的畢業**,感覺非常的方便。

在機器上安裝vi無需特別的安裝路徑,對此你無需太多擔心。當安裝系統的時候,vi自動會出現。因為系統管理員需要使用vi處理很多任務作,包括建立系統文字等。redhat的linux在系統中提供了安裝特定編輯器的選擇,但是在unix作業系統不安裝vi的情況相當少見。

作者的注釋

這篇文章是以solaris 7的vi為基礎。儘管我要討論的是乙個特定的vi版本,但是這裡所討論的方法可以適用於任何vi版本,同樣也可適用於

windows發布的mks toolkit版本。

vi使用與操作

在介紹如何使用vi之前,了解vi具有兩種基本模式是很重要。這兩種基本模式為輸入模式和指令模式。輸入模式為輸入命令,文字就會顯示在螢幕上;而指令模式為輸入命令就執行命令,而不會顯示文字。理解指令模式最簡單方式就是想象平時剪下、複製以及貼上資料時所發生的情況。

在預設狀態下,vi以指令模式下啟動,因此你輸入命令時不會顯示文字,除非你輸入命令切換至輸入模式。大多數vi命令不會螢幕上顯示任何東西,你只需要知道它們的工作過程就足夠了。使用[esc]鍵可以在輸入模式和指令模式之間切換。如果你已經處於指令模式中,使用[esc]將會告訴vi,你已經輸入命令並將要執行命令。如果你沒有輸入任何命令,在指令模式中按下[esc]鍵將中斷操作。

現在我已經介紹了vi的基本操作,你可以動手試用一下。首先,在你的工作站開啟乙個終端視窗,你只需在$提示中輸入vi然後按回車鍵就可以啟動vi編輯器。

接著,你將看到彈出乙個頁面左下角有乙個~符號的空白檔案。這一符號不容易看到,但是你看到的這些~符號正是表示處於檔案的底部。當對檔案儲存之後,這些符號就不會顯示出來。

若要編輯某個檔案或者為一空白檔案命名,你可輸入vi filename。vi filename可以是乙個已經存在的檔名或者是乙個給新檔案指定的名稱。

通用輸入模式

一旦進入編輯文件,除了使用[esc]切換方法,還有其它很多方法使vi進入到輸入模式。很多其它的方法都包含使用乙個vi指令。這些指令可以立即讓vi進入輸入模式,由此輸入的字元立即以文字出現在文件中。常用的指令為:

i這是乙個輸入命令,即從游標所在位置前面開始插入文字,游標後的文字隨新增文字向向移動。 如果是乙個空白文件,文字將會輸入在文件的左上角。

i在行命令開始處的輸入模式,即在當前行的開始處輸入文字。與word中的按下鍵後輸入文字類似。

a這是乙個新增命令,即從游標所在位置後面開始新增文字,游標後的資料隨新增文字向後移動。

a 這是乙個新增到行命令的操作,即從游標所在行最後面的地方開始新增文字。這與word中的按下鍵後輸入文字類似。

o這是乙個命令之下的開啟行命令,即在游標所在行下面新增一行並進入輸入模式。

o這是乙個命令之上的開啟命令,即在游標所在行上方新增一行並進入輸入模式。

編輯之後使用以上任一命令,將會返回到指令模式。

游標移動指令

接下來需要學習的是vi中的瀏覽命令。以指令模式在文件中移動,可以使用以下的命令:

h:將乙個文字移動到左邊

j:往下移動乙個文字

k: 往上移動乙個文字

l: 將乙個文字移動到右邊

在滑鼠與gui的環境中,這些移動命令看似有些過時,但是它們都被包含於所有vi版本就廣泛應用。很多時候,游標號,上游標,下游標,左游標,右游標都會起到作用,但是操作者應該將termcap與terminfo屬性包含在這些命令之中。

以下的其它移動指令也可大有幫助:

[ctrl]f

向下移動一頁指令。這將使得游標在文字中向下移動一頁。

[ctrl]b

向後移動一頁指令。這將使得游標在文字中向後移動一頁。

[ctrl]u

向下移動半頁指令。這將使得游標在文字中向下移動半頁。

^行命令開始處。游標將會移動到行的開始處。

$行命令結束處。游標將會移動到行的結束處。

w移動到上乙個文字的開始。

b移動到下乙個文字的開始。

e文字末端指令。

g移動到檔案的末端。

常規功能

在一般的文字編輯器中,所有的功能,比如刪除,更改,剪下,複製,貼上,以及搜尋/替代等,都可以在vi中找到。很多指令都可以將編輯狀態進入輸入模式,而又可以使用[esc]來終止。常規使用的編輯指令包括:

x:刪除字元命令,即刪除游標所在字元。

dw:刪除文字命令,即刪除游標處的文字。

dd:刪除行命令,即刪除游標所在的行。

d:刪除到行末端,即刪除從游標所在位置到行末端的所有文字。

cw:改變文字命令,即游標所有位置的文字將隨著輸入文字而改變,至到按下[esc]。

r:替代字元命令,即游標所在位置的字元將被輸入的字元替代,至到按下[esc]。

r:替代多行字元命令,即游標所在位置到右邊所有的字元將被輸入的字元替代,至到按下[esc]。

絕大多數這些指令都可以通過組合而提高其功能。例如,如果你輸入2dd,vi將刪除兩行文字。

剪下與貼上等操作

與其它很多編輯器一樣,你可以在文件中使用剪下與貼上文字。以下命令是可以使用的最為簡單的剪下與貼上操作。

yy複製行命令。游標所有行的文字將被複製到類似剪下板的緩衝器。注意到可以使用多個複製命令更改這一命令以將多行文字剪下到緩衝器。

yl複製字元命令。游標所有行的字元將被複製到類似剪下板的緩衝器。可以使用多個複製命令更改這一命令以將多行字元剪下到緩衝器。

p後放置命令。在當前游標位置之後放置或貼上緩衝器的內容。對於複製行命令,緩衝器的內容將被貼上在當前行之後。對於複製字元行命令,緩衝器內容將被貼上在游標的右邊。

p前放置命令。在當前游標位置之前放置或貼上緩衝器的內容。對於複製行命令,緩衝器的內容將被貼上在當前行之前。對於複製字元行命令,緩衝器內容將被貼上在游標的左邊。

使用複製和放置指令時,你也可以字元指令而使用多個緩衝器或剪下板。這些字元可為a-z,並且只能是小寫字母。例如,ayy將當前行內容複製到緩衝器a,ap命令將緩衝器的內容貼上在當前行之前。

vi中最為重要的命令要算undo指令。這一命令十分簡單:只需要按下u。按下u鍵就可以撤消最近使用的一次指令。

與undo命令類似的是redo命令。按下句號鍵(.)將會重新鍵入最近的指令。例如,如果你使用cw來改變乙個文字,你可以查詢這一文字然後使用句號.來這一文字。

其它兩個重要的命令為search命令。為了在文件中向前查詢,可鍵入/text,text即為你查詢的內容。重要的是一定注意,只有輸入內容完全的匹配,你才可以查詢到。vi不支援混合查詢或者模糊查詢。對於向後查詢,可鍵入?text,text即為查詢的內容。

編輯指令

在指令模式中,很多組命令都可以字首:。與以上提及的命令不一樣,一旦輸入乙個冒號,所有指令都出現在螢幕的左下角,並可以在執行之前編輯。以下是常用的重要的:指令。

:w編寫檔案命令。如果你輸入:w然後回車,當前檔案將被寫入硬碟。如果使用的是乙個空白文件,將會出現「沒有當前的檔名」的訊息。可以使用:w檔名將乙個空白文件或當前文件寫入到另一檔案。

:w!或:w檔名

覆蓋檔案命令。如果輸入:w!然後回車,檔案將會被當前新輸入的名稱而覆蓋。這可用於檔案的覆蓋。

:q退出命令。如果正常保持,輸入:q將會終止整個操作。

:q!退出而不需要保持命令。在不需要儲存檔案的情況下退出。

:%s/find_text/replace_text/

查詢與替代命令

Vi 特殊操作

1.nyl 複製游標後n個字元 nyh 複製游標後n個字元 2.行縮排 按v進入visual狀態,選擇多行,用 或 縮排或縮出 在命令狀態下對當前行用 連按 兩次 或對多行用n n是自然數 表示自動縮排從當前行起的下面n行。使用gg g可對整篇 進行排版。3.將shell命令執行的結果送到vi的當前...

vi 操作指南

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

vi常用操作

vi作為linux下的一款文字編輯工具,linux下的很多命令都基於其格式 utf 8 無bom 但是實事上我們用得並不多,以下就個人使用心得介紹相關命令 1 建立乙個檔案。嚴格來說,這個不是vi命令,是linux命令,但是是必須要用的 命令如下 touch filename.ext 建立檔案 fi...