二十分鐘搞定 VI編輯器

   配置文件和shell腳本文件等都是文本文件,對它們都須要使用文本編輯器進行編正則表達式

處理。在Linux系統中有許多種文本編輯器,其中既有字符界面的如:vi,emacsshell

等,也有圖形界面的如:「附件」菜單項下的「文本編輯器(gedit)」等,用戶能夠express

根據本身的喜愛選擇使用,可是對於學習使用Linux系統的用戶通常都會學校vi編輯器vim

的用法。緩存

   編輯器vi能夠編輯各類無格式的文本文件,尤爲便於編輯源程序。它能夠實現輸編輯器

入、 查找、替換、刪除和塊操做等許多基本的文本操做功能,並且用戶能夠根據本身ide

須要對其進行定製,以符合本身的習慣。在vim中,還有一些加強的功能,如撤銷多學習

行輸入、參數高亮顯示、命令行編輯和支持圖形方式vi的多窗口、多緩衝區等。字體

   因爲vi是交互式的文本編輯器,它沒有菜單,只有命令,並且命令很是多,全部spa

多初學者使用不習慣,可是在掌握了它的使用訣竅後很快會喜好上它的。在vi中有3

種工做模式:文本編輯模式、命令模式、行編輯模式。其中,文本編輯模式要工做在

插入狀態下,而行編輯模式實際上也是命令模式的一種,只不過它是須要在命令行模

式下先輸入「:」後在輸入命令而已。用戶能夠根據須要,經過一些命令在這三中模

式之間自由地切換,而大多數命令就是該操做的英文單詞的第一個字母。

   另外,vi只是一個文本編輯器,它不是排版軟件,因此它不能像word那樣能夠對

檔中的字體、格式和段落等屬性進行編輯,這是由它的用途而決定的。在vi中對文

本所作的修改將被放到內存緩衝區中,只要用戶不輸入存盤命令,那麼隨時均可以放

棄這些修改。通常狀況下,文本在存盤時vi不會自動保存備份文件,可是在打開文件

時Linux系統會在磁盤相關目錄下自動建立擴展名爲.swp的文件,這個文件也稱爲交換

文件。若是因爲某些緣由,如編輯器崩潰、系統斷電或非法關機等操做時,該文件就

做爲備份文件使用,用戶在下次啓動系統時會在本身的主目錄下收到相關郵件,由用

戶決定是否經過命令來恢復文件。

   基本命令

   在vi編輯器的命令模式下,命令的組成格式是:nnc。其中,字符c是命令,nn是

整數值,它表示該命令將重複執行nn次,若是不給出重複次數的nn值,則命令將只執

行一次。例如,在命令模式下按j鍵表示光標向下移動1行,而在命令模式下輸入10j則

表示光標將向下移動10行。顯然,這樣比單純移動鍵盤光標鍵效率要高。

   一、定位光標

   因爲文件內容的插入、刪除和替換等操做都是針對光標所在的字符或行而言的,

所以應該熟悉光標移動的命令和方法,並充分利用命令重複執行的次數。

   w            將光標移動到下1個單詞的第1個字符。

   W            將光標移動到後面第2個單詞的第1個字符

   e或E         將光標移動到下1個單詞的最後1個字符

   b或B         將光標移動到前1個單詞的第1個字符

   /string      向後移動光標,並使之停留在字符串string的第一個字符處

   ?string     向前移動光標,並使之停留在字符串string的第一個字符處

   $            將光標移動到本行的最後1個字符上

   Ctrl+b       將光標移動到本行的第1個字符上

   其中,w或W命令的差異只是在於非空格分割字符上,w命令視非空格分隔字符爲單

詞,而W命令則忽略它。當使用/string或?string命令時,除了光標移動到指定的位

置外,還使文件中全部符合字符串string的地方高亮顯。

   二、插入或添加

   不管是插入仍是添加,都是向所編輯的文件中加入新的內容,但因爲插入能夠在

光標前或當前行前,添加能夠在光標後或當前行後,因此vi提供了多種插入和添加命

令:

   i            在光標前插入字符

   I            在當前行的行頭插入字符

   a            在光標後添加字符

   A            在當前行的行尾添加字符

   o            在當前行後添加新行

   O            在當前行前添加新行
   因爲這6個命令都會使vi編輯器從命令模式切換到文本編輯模式下的插入狀態,所

以當插入或添加完成後,必須按ESC鍵返回到命令模式下。

   三、刪除

   刪除文本文件中的內容,能夠按照字符、單詞和行爲單位進行刪除,所以,也有

多個刪除命令。刪除命令執行後將使vi繼續處於命令模式下。

   x            刪除光標所在位置的字符,且光標移動到本行的下1個字符

   X            刪除光標所在位置的前一個字符,且光標停留在原來的字符上

   D            刪除光標所在位置到行尾的全部字符,且光標停留在本行的行尾

   按2次d       刪除光標所在的行,且光標移動到下1行

   先d後w       刪除光標所在位置到下一個單詞的第一個字符間的全部字符,且

光標移動到下一個單詞的第一個字符。

   四、查找

   在文件中查找字符串時,能夠向前查找也能夠向後查找,所以有兩種命令,其格

式爲:

   /expression

   ?expression

   其中,斜槓(/)表示從當前位置開始向後查找,問號(?)表示從當前位置開始

向前查找,expression是正則表達式。若是正則表達式是字符串且包含:. ^ $  / ~

等特殊字符(元字符),則查找包含這些特殊字符的字符串時,必定要在它們每個

前面加上反斜槓(\)字符表示轉義。

   參考示例:

   For the users,permission to use at is detemined by the file ~/yt-3.1.8 contains the exact definition of the time specification.

   查找字符串~/yt-3.1.8,在命令行模式下輸入:/\~\/yt-3\.1\.8,注意:要在

每1個標籤字符前都要使用轉移字符。

   五、修改

   在vi編輯器中修改文本文件內容的命令主要是刪除指定的字符或行並輸入新的字符,替換指定的字符或行。

   s            刪除光標所在位置的字符,且光標移動到下1個字符上。而後進入

                文本編輯模式下的插入狀態,等待用戶輸入

   S            刪除光標所在行,且光標仍在本行的行首,而後進入文本編輯模

                式下的插入狀態,等待用戶輸入    

   按2次c       與S命令功能相同

   C或c$        刪除光標所在位置到行尾的全部字符,且光標停留在本行的行    

                尾,而後進入文本編輯模式下的插入狀態,等待用戶輸入

   r            用r命令後輸入字符替換當前光標位置處的字符。1次只能替換1個

                字符,若是是相同連續的字符能夠用nnr命令的形式。

   R            使用該命令會使用vi進入文本編輯模式的替換狀態,在屏幕的左

下方顯示「REPLACE(替換)"狀態信息。在這種狀態下,從當前光標所在的位置開始,

新輸入的字符將逐個替換原有的字符,直到用戶按下Esc鍵返回命令模式爲止。

注意:s、S、C、c$命令是修改命令,它們與x、X、D、d刪除命令不一樣的地方在於刪除

字符或行後vi的工做模式轉變,等待用戶插入字符修改。R、r是替換命令,此時vi是

文本編輯模式下的替換狀態而非插入狀態,輸入的新字符將覆蓋舊字符,因此在輸入

時必定要注意是否覆蓋了不應覆蓋的字符。

   六、剪切與粘貼

   在文本文件編輯中,常常須要將某處的1個句子或若干行文本移動或複製到本文件

的其餘地方,這就須要編輯器有剪切和粘貼的功能。

   vi中的緩衝區分爲通用緩衝區和專用緩存區,在通常狀況下,最近1次的抽取、刪

除、插入和修改的內容都將存放在通用緩衝區中。利用這些緩衝區能夠很是方便地實

現文件內容的剪切和粘貼。

   按2次y        將光標所在行的內容複製到通用緩衝區,該命令也稱爲抽取。

   p             取出通用緩衝區中的內容放在光標所在位置的後面,即粘貼。

   複製多行可使用nnyy命令。另外,D、dd、O等刪除、插入命令也是以行爲單位

將處理的內容放入通用緩衝區的。

   七、撤銷操做

   使用編輯器的用戶都會但願有撤銷操做的命令。在vi編輯器中使用u鍵能夠恢復。

   八、幾個特殊的命令

   J命令

   合併第n行與第n+1行,使用時,將光標移動到第n行上按J鍵便可。

   .命令

   重複執行前一條操做命令。    

   ~命令

   改變光標所在位置字母的大小寫,即大寫變小寫,小寫變大寫。

相關文章
相關標籤/搜索