1. 程式人生 > >2017-12-19Linux基礎知識(18)vi編輯器

2017-12-19Linux基礎知識(18)vi編輯器

linux 基礎

我們在上一節當中講述了正則表達式(BRE, ERE),它們兩個的正則表達式元字符書寫方式有些不同,以及我們也講述了grep和egrep和fgrep之間的關系也知道了如何使用,它是根據用戶所指定的"PATTERN"來對文本進行逐行匹配進行過濾,將匹配到的行進行輸出,之後我們也介紹了其文本查看處理工具,例如:wc、cut、sort、uniq、diff、patch。那麽在這一章當中我們來講述一下vim編輯器。

一、文本編輯器

vi編輯器是一款純文本編輯器,所謂的純文本也就是沒有任何的修飾的文本信息,和我們的網頁以及辦公軟件不同的是,後者是有文本標記語言的,例如.html和.xml可以進行修飾,能夠更改字體大小、添加下劃線以及更改字體的顏色等,這樣能夠在確保在下次打開之前還能夠保留這樣的格式。

而純文本的編輯器沒有標記語言這一說,就是單純的保留字符信息,即使字體大小更改也是用一種特殊的方式,其選中某個字段更改字體大小也更改的全部字段(例如:Windows記事本)。

1.1 文本編輯器種類

在Linux當中,文本編輯器的種類一共有兩種,一種是行編輯器,另一種是全屏編輯器,在行編輯器中的代表為sed;而在全屏編輯器中,一個是nano,另一個就是vi了,而vi的意思為(Vistual Interface)稱之為可視化接口,還有一個是vi的增強版,我們稱之為vim(VI IMproved)。

二、vim編輯器

如果不加說明的話,在這裏vi/vim是通用的,vim是一款模式化的編輯器,每種模式的功能是不盡相同的,一般來說,它的基本常用模式有以下幾種:

   編輯模式, 命令模式(復制、刪除等); 
   輸入模式:在原有的文本基礎上編輯該文本以及修改輸入;
      末行模式:
         內置的命令行接口;

2.1 打開文件

vim編輯器和之前nano的打開方式相同,如果在本地或指定的路徑沒有文件時,會自動創建此文件,並將編輯好之後信息保留在此文件中,其基本用法如下:

   # vim [OPTIONS] [FILE...]

當打開某個文件後,光標默認在最左上角的第一行中的第一列當中,我們可以通過某個選項來可以對光標進行指定,用來定位讓光標處於哪一行的行首,選項如下:

   +#:打開文件後,直接讓光標處於第#行的行首;
   +/PATTERN:打開文件後,直接讓光標處於第一個被PATTERN匹配到的行的行首位置;

那麽打開文件之後,就默認處於編輯模式,我們如果想要修改該文件時,就要從編輯模式轉換到輸入模式,有以下幾種方式可提供選擇:

   編輯模式:默認模式
    編輯模式 --> 輸入模式:
        i:insert, 在光標所在處輸入;
        a:append, 在光標所在處的後方輸入;
        o:在光標所在處的下方插入一個新行;
        I:在光標所在行的行首輸入;
        A:在光標所在行的行尾輸入;
        O:在光標所在處的上方打開一個新行;

那麽從輸入模式回到編輯模式時,使用ESC鍵就可以回到編輯模式。

   輸入模式 --> 編輯模式
     ESC

當我們從編輯模式轉換為末行模式時,要使用":"來進行轉換。

   編輯模式 --> 末行模式
     :   (這是個內置命令行接口)

從末行模式中要是回到編輯模式的話,也要使用ESC鍵來進行轉換;如果末行模式有命令的話,需連按兩次ESC鍵。

   末行模式 --> 編輯模式
     ESC

2.2 關閉文件

當我們了解完以上幾種模式的時候,那麽現在了解一下如何關閉文件,在編輯模式下使用快捷鍵ZZ就能夠保存並退出,也可以在末行模式下退出,那麽在末行模式下退出的方法有很多種。

   :q  退出;
   :q! 強制退出;
   :wq 保存並退出;
    :w  :q
   :x  保存並退出;
   :w /PATH/TO/SOMEFILE    可理解另存為

2.3 光標跳轉

光標跳轉實際上可以理解為man手冊的翻頁,或者為單詞之間的跳轉等,根據跳轉範圍,我們大致能分為以下幾種:

   光標跳轉:
    
    字符間跳轉:
        h:左
        j:下
        k:上
        l:右
        
        # COMMAND:跳轉由#指定個數的字符;
        
    單詞間跳轉:
        w:下一個單詞的詞首;
        e:當前或後一個單詞的詞尾;
        b:當前或前一個單詞的詞首;
        
        # COMAND:跳轉由#指定個數的單詞;
        
    行首行尾跳轉:
        ^:跳轉至行首的第一個非空白字符;
        0:跳轉至行首;
        $:跳轉至行尾;
        
    行間跳轉:
        #G:跳轉至由#指定的行;
        1G, gg:跳轉至第一行;
        G:最後一行;
        
    句間跳轉:
        )
        (
        
    段間跳轉:
        }
        {

2.4 翻屏

我們在man命令中,如果要翻到下一屏,要使用f鍵,向上翻一屏要使用b鍵,但在vim中翻屏操作要比man命令有所區別:

   翻屏:
    Ctrl+f:向文件尾部翻一屏;
    Ctrl+b:向文件首部翻一屏;
    Ctrl+d:向文件尾部翻半屏;
    Ctrl+u:向文件首部翻半屏;
    Enter:按行向後翻;

三、vim的編輯命令

用vim的編輯命令,我們可以對該文件進行大規模的操作,通常編輯命令包含以下編輯操作:

   字符編輯:
    x:刪除光標所在處的字符;
    #x:刪除光標所在處起始的#個字符;
    
    xp:交換光標所在處的字符與其後面的字符位置
    
   替換命令(replace):
    r:替換光標所在處的字符;
        rCHAR
        
   刪除命令:
    d:刪除命令,可結合光標跳轉字符,實現範圍刪除;
        d$:刪除從當前字符到行尾的內容;
        d^:刪除從當前字符到行首的內容;
        dw:刪除從當前字符到下一個單詞的詞首;
        de:刪除從當前字符到下一個單詞的次衛;
        db:當前或前一個單詞的詞首;
            # COMMAND
        dd:刪除光標當前所在的行;
            #dd:刪除光標所在處的行起始共#行;
            
   粘貼命令(p, put, patse):
    p:緩沖區中的內容如果為整行,則粘貼在當前光標所在行的下方;否則,則粘貼至當前光標所在處的後方;
    P:緩沖區中的內容如果為整行,則粘貼在當前光標所在行的上方;否則,則粘貼至當前光標所在處的前方;
    
   復制(yank,y):
    y:復制,工作行為相似於d命令;
    y^:
    y0:
    
    ye:
    yw:
    ya:
        #COMMAND
    
    yy:復制一整行
        #yy:復制#行;

3.1 改變命令

改變命令功能是能從編輯模式轉換為輸入模式,因為改變什麽是需要用戶的介入,其次它也能實現刪除的操作。

   改變命令(change, c)
    編輯模式 --> 輸入模式,實現刪除操作;
        c$
        c^
        c0
        
        cb
        ce
        cw
            #COMMAND
            
        cc:刪除光標所在的行,並轉換為輸出模式;
            #cc:

四、其它編輯操作

以上就是對行進行操作,在windows中,點擊鼠標左鍵我們就能劃過某個字段來進行編輯操作,在vim編輯器中也可以實現,我們可以稱之為可視化模式。

   可視化模式:
    v:按字符選定;
    V:按行選定;
    
    結合編輯命令使用:d, c, y

接下來是撤銷操作,如果說在文件中我們編輯錯誤或者刪除錯誤時,可以進行撤銷操作來進行還原,需要註意的是,如果進行了保存並退出的話,則撤銷不回原點。

   撤銷(undo)操作:
    u:撤銷此前的操作;
        #u:撤銷此前的#個操作

如果撤銷錯誤的話,我們可以撤銷此前撤銷的操作,也可以稱作為向前還原。

   撤銷此前的撤銷操作:
    Ctrl+r

如果某一個操作能夠執行多次,也可以重復執行前一個編輯操作:

   重復執行前一個編輯操作:
    .

如果還想學習更多關於vim的其它操作,在Linux中自帶有vim教程,該教程的命令為:vimtutor


2017-12-19Linux基礎知識(18)vi編輯器