編輯一個(gè)文本文件是經(jīng)常使用到的計(jì)算機(jī)操作。我們想做的大多數(shù)事情都需要使用某種文件編輯。文本編輯器會方便文件的創(chuàng)建和修改。這些文件也許會包含備記錄、日程表、程序源代碼等等。文本編輯器是簡化的字處理器,就不存在字處理器所具有的黑體、居中、下劃線等等這印刷上的特點(diǎn)。當(dāng)然每一種操作系統(tǒng)軟件都至少支持一種文本編輯器。 通常有兩種方式: 行編輯器(一種每次修改只能在一行之中或組行之間進(jìn)行的方式) 全屏編輯器(只能顯示正在編輯的那一屏進(jìn)行修改,而且立刻能在屏幕上顯示出來)
當(dāng)然UNIX中也有文本編輯器,下面就來介紹一下: 編輯器名稱 | 類 型 | ed | 最初的行編輯 | ex | 在ed上擴(kuò)展更為復(fù)雜的編輯器 | vi | 可視化的全屏編輯器 | emacs | 公共域的全屏編輯器 | UNIX支持的編輯器 下面就來具體介紹vi編輯器: vi 的原意是“Visual”,它是一個(gè)立即反應(yīng)的編輯程式,也就是說可以立刻看到操作結(jié)果。 vi是大多數(shù)UNIX系統(tǒng)都支持的全屏文本編輯器。它是由行編輯器ex發(fā)展而來的。它也兩個(gè)版本:view編輯器和vedit編輯器。其中view編輯器對vi設(shè)了只讀標(biāo)志,而vedit編輯器對vi做了幾個(gè)標(biāo)志設(shè)置,同時(shí)也簡化了vi的使用。 vi有兩種基本工作模式,文本輸入模式和命令模式。文本輸入模式即是用來輸入文字資料,而命令模式則是用來下達(dá)一些編排文件、存檔、以及離開vi等等的操作命令。當(dāng)執(zhí)行vi后,會先進(jìn)入命令模式,此時(shí)輸入的任何字符都視為命令。
進(jìn)入與退出 要進(jìn)入vi可以直接在系統(tǒng)提示字符$下鍵入vi [文件名],然后鍵入回車。vi可以自動幫我們進(jìn)入所要編輯的文檔或是開啟一個(gè)新文檔。進(jìn)入vi后屏幕左方會出現(xiàn)波浪符號,凡是列首有該符號的就代表此列目前是空的。 要離開vi可以在命令模式提示符:下鍵入q。要切換到命令模式下則是用[ESC]鍵,如果不知道現(xiàn)在是處于什么模式,可以多按幾次[ESC],系統(tǒng)會發(fā)出嗶嗶聲以確定進(jìn)入命令模式。 鍵 | 功能 | wq | 保存文件,退出vi | w | 保存文件,但不退出vi | q | 退出編輯器 | q! | 退出編輯器,同時(shí)放棄所做的修改 | ZZ | 保存文件,退出vi | vi編輯器的退出命令
vi輸入模式 要如何輸入資料呢?有好幾個(gè)命令可以進(jìn)入輸入模式: 1.添加文本 a 從光標(biāo)所在位置后面開始增加資料,光標(biāo)后的資料隨新增資料而向后移動。 A 從光標(biāo)所在行的最后面的地方開始增加資料。 2.插入正文 i 從光標(biāo)所在位置前面開始插入資料,光標(biāo)后的資料隨新增資料而向后移動。 I 從光標(biāo)所在行的第一個(gè)非空白字符前面開始插入資料。 3.增添新行 o 在光標(biāo)所在行下新增一行并進(jìn)入輸入模式。 O 在光標(biāo)所在行上方新增一行并進(jìn)入輸入模式。 實(shí)例 下面來演示一下(以i為例,其中紅色字母為光標(biāo)所在位置): ·先按[Ese]鍵。使vi處于命令模式。 ·按i鍵。將vi切換到文本輸入模式。 ·按字符123。這時(shí)會發(fā)現(xiàn)123出現(xiàn)在m的前面。 此時(shí)光標(biāo)仍停留在m上,vi還處于文本輸入模式,直到再按[Ese]才回到命令狀態(tài)。 如:The vi history The vi editor is an interactive text editor that is supported by most of the UNIX operating systems. 到:The vi history The vi editor is an interactive text editor that is supported by 123most of the UNIX operating systems.
vi 基本編輯 在配合一般鍵盤上的功能鍵,像是方向鍵、[Insert] 、[Delete] 等等,現(xiàn)在我們應(yīng)該已經(jīng)可以利用 vi 來處理文字資料了。當(dāng)然 vi 還提供其他許多能讓文字的處理更方便的用法。 文本刪除與修改 何謂編輯?在這里我們認(rèn)為是文字的增加、修改以及刪除,甚至包括文字塊的移動、復(fù)制等等。這里先介紹 vi 的如何做刪除與修改。 注意:在 vi 的原始概念里,輸入和編輯是兩回事。編輯是在命令模式下操作的,是先利用命令移動光標(biāo)來定位要進(jìn)行編輯的地方,然后才下命令做編輯的。
x 刪除光標(biāo)所在字符 dd 刪除光標(biāo)所在的行 r 替換當(dāng)前光標(biāo)所在字符 R 從當(dāng)前光標(biāo)的位置開始替換字符,并且使vi進(jìn)入文本輸入模式 s 刪除光標(biāo)所在字符,并進(jìn)入輸入模式 S 刪除光標(biāo)所在的行,并進(jìn)入輸入模式 u 放棄最近的修改 U 放棄對當(dāng)前行的所有修改
實(shí)例 下面來演示一下(以R為例,其中紅色字母為光標(biāo)所在位置): ·按R從當(dāng)前光標(biāo)開始替換字符。vi進(jìn)入文本輸入模式。 ·按字符123。vi編輯器會從當(dāng)前光標(biāo)開始用123替換ost。這時(shí)vi仍處于文本輸入模式。 如:The vi history The vi editor is an interactive text editor that is supported by m123 of the UNIX perating systems. ·按[Ese]鍵可以返回到命令模式。 ·按U可以恢復(fù)對當(dāng)前行所做的修改。 到:The vi history The vi editor is an interactive text editor that is supported by most of the UNIX perating systems. 在命令模式下移動光標(biāo)的基本命令是 h, j, k, l 。想來大家現(xiàn)在也應(yīng)該能猜到只要直接用鍵盤上的方向鍵就可以了,而且無論在命令模式或輸入模式下都是可以。 當(dāng)然鍵盤也有不足之處。有個(gè)很好用的命令u可以恢復(fù)被刪除的資料,而U命令則可以恢復(fù)對光標(biāo)所在行的所有修改。這與某些電腦上的[Undo]按鍵功能相同。
移動光標(biāo) 由于許多編輯工作是借用光標(biāo)來定位的,所以 vi 提供了許多移動光標(biāo)的方式,下面用幾張簡表來說明(這些當(dāng)然也是命令模式下的命令): 命令 | 說明 | 功能鍵 | 0 (數(shù)字) | 移動到光標(biāo)所在列的最前面 | [Home] | $ | 移動到光標(biāo)所在列的最后面 | [End] | [CTRL][d] | 向下半頁 | | [CTRL][f] | 向下一頁 | [PageDown] | [CTRL][u] | 向上半頁 | | [CTRL][b] | 向上一頁 | [PageUp] | 命令 | 說明 | H | 移動到視窗的第一行 | M | 移動到視窗的中間行 | L | 移動到視窗的最后行 | b | 移動到下個(gè)字的第一個(gè)字母 | w | 移動到上個(gè)字的第一個(gè)字母 | e | 移動到下個(gè)字的最后一個(gè)字母 | ^ | 移動到光標(biāo)所在列的第一個(gè)非空白字符 | 命令 | 說明 | n- | 減號移動到上一行的第一個(gè)非空白字符前面加上數(shù)字可以指定移動到以上 n 行 | n+ | 加號移動到下一行的第一個(gè)非空白字符前面加上數(shù)字可以指定移動到以下 n 行 | nG | 直接用數(shù)字 n 加上大寫 G 移動到第 n 行 | 命令 | 說明 | fx Fx | 往右移動到 x 字符上 往左移動到 x 字符上 | tx Tx | 往右移動到 x 字符前 往左移動到 x 字符前 | ; , | 配合 f&t 使用,重復(fù)一次 配合 f&t 使用,反方向重復(fù)一次 | /string string | 往右移動到有 string 的地方 往左移動到有 string 的地方 | n N | 配合 /&? 使用,重復(fù)一次 配合 /&? 使用,反方向重復(fù)一次 | 命令 | 說明 | 備注 | n( n) | 左括號移動到句子的最前面前面加上數(shù)字可以指定往前移動 n 個(gè)句子 右括號移動到下個(gè)句子的最前面前面加上數(shù)字可以指定往后移動 n 個(gè)句子 | 句子是以! . ? 三種符號來界定 | n{ n} | 左括弧移動到段落的最前面前面加上數(shù)字可以指定往前移動 n 個(gè)段落 右括弧移動到下個(gè)段落的最前面前面加上數(shù)字可以指定往后移動 n 個(gè)段落 | 段落是以段落間的空白列界定 | 編輯命令 這些編輯命令非常有彈性,基本上可以說是由命令與范圍所構(gòu)成。例如dw是由刪除命令d與范圍w所組成的,代表刪除一個(gè)字d(elete)w(ord)。 命令列表如下: d 刪除(delete) y 復(fù)制(yank) p 放置(put) c 修改(change) 范圍可以是下列幾個(gè): e 光標(biāo)所在位置到該字的最后一個(gè)字母 w 光標(biāo)所在位置到下個(gè)字的第一個(gè)字母 b 光標(biāo)所在位置到上個(gè)字的第一個(gè)字母 $ 光標(biāo)所在位置到該列的最后一個(gè)字母 0 光標(biāo)所在位置到該列的第一個(gè)字母 ) 光標(biāo)所在位置到下個(gè)句子的第一個(gè)字母 ( 光標(biāo)所在位置到該句子的第一個(gè)字母 } 光標(biāo)所在位置到該段落的最后一個(gè)字母 { 光標(biāo)所在位置到該段落的第一個(gè)字母 這些提供了更多的編輯文字的能力。值得注意的是刪除與復(fù)制都會將指定范圍的內(nèi)容放到緩存區(qū)里,然后就可以用命令p貼到其它地方去,這是vi用來處理區(qū)段拷貝與移動的辦法。 在某些vi的版本中,例如Linux所用的elvis里就可以大幅簡化這些命令。如果稍微觀察一下這些編輯命令就會發(fā)現(xiàn)問題其實(shí)是定范圍的方式有點(diǎn)復(fù)雜,實(shí)際上只有四個(gè)命令罷了。 命令v非常好用,只要按下v鍵,光標(biāo)所在的位置就會反白,然后就可以移動光標(biāo)來設(shè)定范圍,接著再直接下命令進(jìn)行編輯就可以了。 對于整行操作,vi另外提供了更方便的編輯命令。前面曾經(jīng)提到過刪除整行文字的命令dd就是其中一個(gè);cc可以修改整行文字;而yy則是復(fù)制整行文字的;命令D則可以刪除光標(biāo)到該行結(jié)束為止所有的文字。 還有許多東西沒有介紹給大家,由于篇幅所限,歡迎大家進(jìn)行瀏覽以后的有關(guān)文章。 |