Unix工程師在平時工作時,需要通過各種手段跟Unix系統(tǒng)進(jìn)行交流、進(jìn)行對話。如在系統(tǒng)防火墻管理中,工程師必須把自己的想法,如允許哪些數(shù)據(jù)包通過,哪些數(shù)據(jù)濾掉等等,告訴給Unix操作系統(tǒng)。而無疑vi程序就是這么一個工具。它能夠?yàn)楣こ處熍cUnix操作系統(tǒng)之間建立一座溝通的橋梁。
Vi是英文visual的縮寫,是Unix操作系統(tǒng)下歡迎的全屏幕編輯程序。它的功能十分豐富,想通過一篇文章的篇幅介紹其全部的功能,有點(diǎn)不現(xiàn)實(shí)。為此在這里,筆者從如何提高vi程序利用率與開發(fā)速度的角度,談?wù)剉i工具的實(shí)用技巧以及需要注意的地方。
一、vi編輯程序在工作緩沖區(qū)中完成全部工作。
Vi編輯程序有一個特點(diǎn),她的工作全部是在緩沖區(qū)中完成的。工程師在編輯對話開始之前,vi編輯程序會從硬盤中將用戶編輯的文件讀入工作緩沖區(qū)內(nèi)。在工程師進(jìn)行編輯的過程中,全部在緩沖區(qū)內(nèi)完成,直到把工作緩沖區(qū)的內(nèi)容寫回到硬盤中。工程師在編輯新文件時,vi編輯程序也并不立即在硬盤中建立文件,而是先把內(nèi)容保存在緩沖區(qū)內(nèi)。然后需要管理員通過w命令把文件保存到硬盤中。
這種機(jī)制,即有好處,也有壞處。由于系統(tǒng)從緩沖區(qū)讀取數(shù)據(jù)要比在硬盤中讀取數(shù)據(jù)快的多。故利用vi來編輯程序會有效率會比較高。但是緩沖區(qū)的內(nèi)容由于沒有及時保存在硬盤上,所以如果Unix服務(wù)器突然斷電的話,緩沖區(qū)中的內(nèi)容將會全部丟失。從而帶來一些不必要的損失。所以筆者建議,在利用vi編輯程序編寫大型程序的時候需要特別注意,要及時利用w命令來保存緩沖區(qū)中的內(nèi)容。不過需要說明的是,vi編輯程序畢竟不是一個文本編輯軟件。若利用這個工具來建立復(fù)雜的文件,不是明智的做法。
二、選擇正確的模式來操作。
Vi編輯程序有三種操作模式,分別為命令模式、輸入模式和底行命令模式。
在命令模式下工程師輸入的內(nèi)容被翻譯成命令傳遞給vi編輯程序。如“a”命令就是其中比較有代表的一個。命令模式下工程師鍵入的所有字符都不會在屏幕上顯示出來;工程師也不用按回車鍵來執(zhí)行命令。Vi編輯程序下的命令通常情況下都是單個字符,他們往往是英文操作名稱的首字符。如上面提到的英文字母“a”就表示插入字符等等。
在輸入模式下,工程師才能夠?qū)ξ募M(jìn)行編輯。通常情況下,工程師剛進(jìn)入vi編輯程序時是處于命令模式下。此時工程師是無法對文件進(jìn)行編輯的。在輸入模式下,vi編輯程序就好象是一個類似于打字機(jī)軟件。工程師在此鍵入的內(nèi)容,都將作為文本來接受并顯示給管理員。完成輸入或者編輯文本工作后,按 Esc鍵返回到命令模式中。
當(dāng)工程師編輯好文本內(nèi)容后,需要用冒號開始的命令把vi的光標(biāo)移動到屏幕的底行。此時vi編輯程序進(jìn)入到底行命令模式。工程師往往需要把冒號跟其他命令結(jié)合使用,如“:w”表示保存緩沖區(qū)中的文件。在底行命令模式下,主要用來執(zhí)行一些特別的功能。如可以在不退出vi編輯環(huán)境的情況下實(shí)現(xiàn)替換文本、執(zhí)行shell命令等功能。
由于不同的模式完成不同的工作,故工程師需要了解這三種模式的不同特點(diǎn),然后根據(jù)實(shí)際情況選擇合適的操作模式。具體來說,筆者有如下建議。如果只是查看文件或者說還不確定該如何修改時,在命令模式下查看文件。因?yàn)樵诿钅J较率侵蛔x的,可以避免對原有文件的誤操作。同時,文件編寫完成之后,要及時轉(zhuǎn)換到底行模式下,并利用w等命令把修改后的文件及時保存到硬盤中。可見合適的模式有利于提高工程師的工作效率,同時又可以避免誤操作對原有文件的不利影響。
三、掌握一些快捷操作方式。
在vi編輯程序下,是無法利用鼠標(biāo)來進(jìn)行操作的。光標(biāo)的移動、文字的插入與刪除等等靠鍵盤來完成。所以一個有經(jīng)驗(yàn)的Unix工程師往往需要掌握一些快捷方式,以提高vi編輯程序的利用效率。往往通過觀察對方使用vi編輯程序的方式,就可以判斷對方是否有足夠的Unix使用經(jīng)驗(yàn)。
筆者認(rèn)為,工程師首先需要學(xué)會的是如何快速定位。以為無法使用鼠標(biāo)進(jìn)行光標(biāo)定位,故工程師要利用vi編輯程序?qū)ξ募M(jìn)行插入、添加、修改或者刪除操作時,就必須利用鍵盤把光標(biāo)定位到適當(dāng)?shù)奈恢?,從而完成對指定位置進(jìn)行插入、添加等操作。如工程師要能夠迅速確定光標(biāo)當(dāng)前的位置(如按ctrl鍵+g 組合鍵),然后可以通過G參數(shù)來把光標(biāo)移動到指定的行。如IG可以將光標(biāo)移動到文件的第一行;輸入G則可以將光標(biāo)移動到文件的最末行。
除了學(xué)會如何迅速定位光標(biāo)外,工程師還要學(xué)會如何快速進(jìn)行刪除操作。在vi編輯程序中,可按字符、單詞、行、句子以及段落為單位進(jìn)行刪除。如在 vi的命令模式下,若工程師需要刪除一個詞的話,則可以先降光標(biāo)移動到這個詞的第一個字符上,然后按下dw兩個字符鍵。如果需要同時刪除多個詞的話,則需要在命令dw前加上倍乘因子。同時工程師還可以以行為單位進(jìn)行刪除。工程師將光標(biāo)移動到該行的任意位置,按dd鍵即可。如果按2dd,則可以連續(xù)刪除兩行。依次類推。
雖然vi編輯程序無法利用鼠標(biāo)來操作,但是只要掌握了這些快捷操作,仍然可以非常迅速的利用這個編輯工具跟Unix操作系統(tǒng)進(jìn)行對話。筆者在面試新員工的時候,往往會讓面試者使用vi工具來編輯一個文件。通過這個方法可以在一定程度上判斷出對方在Unix操作系統(tǒng)上的工作經(jīng)驗(yàn)是否跟他們的簡歷相符。故筆者建議一些想在Unix系統(tǒng)上有所作為的年輕人,要在vi這個編輯工具上多花費(fèi)一些功夫。這是非常有必要的。
Vi是英文visual的縮寫,是Unix操作系統(tǒng)下歡迎的全屏幕編輯程序。它的功能十分豐富,想通過一篇文章的篇幅介紹其全部的功能,有點(diǎn)不現(xiàn)實(shí)。為此在這里,筆者從如何提高vi程序利用率與開發(fā)速度的角度,談?wù)剉i工具的實(shí)用技巧以及需要注意的地方。
一、vi編輯程序在工作緩沖區(qū)中完成全部工作。
Vi編輯程序有一個特點(diǎn),她的工作全部是在緩沖區(qū)中完成的。工程師在編輯對話開始之前,vi編輯程序會從硬盤中將用戶編輯的文件讀入工作緩沖區(qū)內(nèi)。在工程師進(jìn)行編輯的過程中,全部在緩沖區(qū)內(nèi)完成,直到把工作緩沖區(qū)的內(nèi)容寫回到硬盤中。工程師在編輯新文件時,vi編輯程序也并不立即在硬盤中建立文件,而是先把內(nèi)容保存在緩沖區(qū)內(nèi)。然后需要管理員通過w命令把文件保存到硬盤中。
這種機(jī)制,即有好處,也有壞處。由于系統(tǒng)從緩沖區(qū)讀取數(shù)據(jù)要比在硬盤中讀取數(shù)據(jù)快的多。故利用vi來編輯程序會有效率會比較高。但是緩沖區(qū)的內(nèi)容由于沒有及時保存在硬盤上,所以如果Unix服務(wù)器突然斷電的話,緩沖區(qū)中的內(nèi)容將會全部丟失。從而帶來一些不必要的損失。所以筆者建議,在利用vi編輯程序編寫大型程序的時候需要特別注意,要及時利用w命令來保存緩沖區(qū)中的內(nèi)容。不過需要說明的是,vi編輯程序畢竟不是一個文本編輯軟件。若利用這個工具來建立復(fù)雜的文件,不是明智的做法。
二、選擇正確的模式來操作。
Vi編輯程序有三種操作模式,分別為命令模式、輸入模式和底行命令模式。
在命令模式下工程師輸入的內(nèi)容被翻譯成命令傳遞給vi編輯程序。如“a”命令就是其中比較有代表的一個。命令模式下工程師鍵入的所有字符都不會在屏幕上顯示出來;工程師也不用按回車鍵來執(zhí)行命令。Vi編輯程序下的命令通常情況下都是單個字符,他們往往是英文操作名稱的首字符。如上面提到的英文字母“a”就表示插入字符等等。
在輸入模式下,工程師才能夠?qū)ξ募M(jìn)行編輯。通常情況下,工程師剛進(jìn)入vi編輯程序時是處于命令模式下。此時工程師是無法對文件進(jìn)行編輯的。在輸入模式下,vi編輯程序就好象是一個類似于打字機(jī)軟件。工程師在此鍵入的內(nèi)容,都將作為文本來接受并顯示給管理員。完成輸入或者編輯文本工作后,按 Esc鍵返回到命令模式中。
當(dāng)工程師編輯好文本內(nèi)容后,需要用冒號開始的命令把vi的光標(biāo)移動到屏幕的底行。此時vi編輯程序進(jìn)入到底行命令模式。工程師往往需要把冒號跟其他命令結(jié)合使用,如“:w”表示保存緩沖區(qū)中的文件。在底行命令模式下,主要用來執(zhí)行一些特別的功能。如可以在不退出vi編輯環(huán)境的情況下實(shí)現(xiàn)替換文本、執(zhí)行shell命令等功能。
由于不同的模式完成不同的工作,故工程師需要了解這三種模式的不同特點(diǎn),然后根據(jù)實(shí)際情況選擇合適的操作模式。具體來說,筆者有如下建議。如果只是查看文件或者說還不確定該如何修改時,在命令模式下查看文件。因?yàn)樵诿钅J较率侵蛔x的,可以避免對原有文件的誤操作。同時,文件編寫完成之后,要及時轉(zhuǎn)換到底行模式下,并利用w等命令把修改后的文件及時保存到硬盤中。可見合適的模式有利于提高工程師的工作效率,同時又可以避免誤操作對原有文件的不利影響。
三、掌握一些快捷操作方式。
在vi編輯程序下,是無法利用鼠標(biāo)來進(jìn)行操作的。光標(biāo)的移動、文字的插入與刪除等等靠鍵盤來完成。所以一個有經(jīng)驗(yàn)的Unix工程師往往需要掌握一些快捷方式,以提高vi編輯程序的利用效率。往往通過觀察對方使用vi編輯程序的方式,就可以判斷對方是否有足夠的Unix使用經(jīng)驗(yàn)。
筆者認(rèn)為,工程師首先需要學(xué)會的是如何快速定位。以為無法使用鼠標(biāo)進(jìn)行光標(biāo)定位,故工程師要利用vi編輯程序?qū)ξ募M(jìn)行插入、添加、修改或者刪除操作時,就必須利用鍵盤把光標(biāo)定位到適當(dāng)?shù)奈恢?,從而完成對指定位置進(jìn)行插入、添加等操作。如工程師要能夠迅速確定光標(biāo)當(dāng)前的位置(如按ctrl鍵+g 組合鍵),然后可以通過G參數(shù)來把光標(biāo)移動到指定的行。如IG可以將光標(biāo)移動到文件的第一行;輸入G則可以將光標(biāo)移動到文件的最末行。
除了學(xué)會如何迅速定位光標(biāo)外,工程師還要學(xué)會如何快速進(jìn)行刪除操作。在vi編輯程序中,可按字符、單詞、行、句子以及段落為單位進(jìn)行刪除。如在 vi的命令模式下,若工程師需要刪除一個詞的話,則可以先降光標(biāo)移動到這個詞的第一個字符上,然后按下dw兩個字符鍵。如果需要同時刪除多個詞的話,則需要在命令dw前加上倍乘因子。同時工程師還可以以行為單位進(jìn)行刪除。工程師將光標(biāo)移動到該行的任意位置,按dd鍵即可。如果按2dd,則可以連續(xù)刪除兩行。依次類推。
雖然vi編輯程序無法利用鼠標(biāo)來操作,但是只要掌握了這些快捷操作,仍然可以非常迅速的利用這個編輯工具跟Unix操作系統(tǒng)進(jìn)行對話。筆者在面試新員工的時候,往往會讓面試者使用vi工具來編輯一個文件。通過這個方法可以在一定程度上判斷出對方在Unix操作系統(tǒng)上的工作經(jīng)驗(yàn)是否跟他們的簡歷相符。故筆者建議一些想在Unix系統(tǒng)上有所作為的年輕人,要在vi這個編輯工具上多花費(fèi)一些功夫。這是非常有必要的。