vi與vim的使用

一、引言

    在Linux中,vi(Visual Interface)是標準的編輯器,功能強大到不遜于任何最新的編輯器。無論在Linux中還是在Unix中,vi的使用方法都是完全相同的。vim(Vi Improved)在vi的基礎上增加了很多新特性。

二、模式

    vim的工作模式有三種,用戶在不同模式下可以進行不同的操作

        命令模式:控制屏幕光標的移動,字符、字或行的刪除、移動和復制

        插入模式:插入模式可以對文本內容進行文字輸入

        命令擴展模式:保存,退出等命令的輸入

    模式切換

        ESC鍵進入命令模式

        命令模式下,“:”冒號進入命令擴展模式

        命令模式 –> 插入模式 

        i    insert, 在光標所在處輸入 

        I    在當前光標所在行的行首輸入 

        a    append, 在光標所在處后面輸入 

        A    在當前光標所在行的行尾輸入 

        o    在當前光標所在行的下方打開一個新行

        O    在當前光標所在行的上方打開一個新行

        鎖定:Ctrl+s

        解鎖:Ctrl+q

        (鎖定過程中,可以接受來自鍵盤的輸入,但是不顯示在屏幕上)

三、打開與關閉文件

    打開文件:vim [OPTION]…FILE…

        +#    打開文件后,光標位于第#行的行首

        +/PATTERN    打開文件后,光標位于第一個匹配到的行

        +    光標位于最后一行

        -b    以二進制的方式打開文件

        -m    只讀打開文件

        -e    直接進入命令擴展模式

    

    關閉文件:

        擴展模式

            :q 退出 :

            q! 強制退出,丟棄做出的修改 

            :wq 保存退出 

            :x 保存退出 

        命令模式

            ZZ:保存退出

            ZQ:不保存退出

四、擴展模式

創建一個命令提示符,位于屏幕左下角、

    常用命令:

        w    寫(存)磁盤文件 

        wq    寫入并退出 

        x    寫入并退出 

        q    退出 

        q!    不存盤退出,即使更改都將丟失 

        r FILE    讀文件內容到當前文件中 

        w FILE    將當前文件內容寫入另一個文件

        !command    強制執行命令 

        r!command    在vi中臨時執行命令

    地址定界

        :/PATTERN1/,/PATTERN2/ 

        #    指定行

        #,#    起始行到結束行

        #,+#    指定行開始到向下的一些行

        .    當前行

        $    最后一行

            $-1    倒數第二行

        %    全文,所有行,等于1,$

    編輯命令:

        d    刪除匹配的內容

        y    復制匹配的內容

        w FILE    將范圍內的行另存至指定文件中

        r FILE    在制定位置插入指定文件中的所有內容

    查找并替換:

    s/PATTERN/STRING/修飾符(分隔符可以改變)

    修飾符:

        i    忽略大小寫

        g    全局替換,否則默認情況下,每行只替換第一次出現的字符

        gc    全局替換,替換前詢問是否替換

五、命令模式

字符間的跳轉:

    h:左    l:右    j:下    k:上 

單詞間的跳轉

    w:下一個單詞詞首

    e:當前或下一個單詞的詞尾

    b:當前或前一個單詞的詞首

頁的跳轉

    H:頁首

    M:當前頁中間行

    L:頁底

行首行尾跳轉:

    ^    跳轉至行首的第一個非空白字符

    O    跳轉至行首

    $    跳轉至行尾

行間移動:

    #G(或擴展模式:#)    跳轉到第#行

    G    最后一行

    1G或gg    第一行

句間移動    

    ):  下一句        (:  上一句

段落間的移動

    }:  下一段        {:上一段

翻屏操作

    Ctrl+f: 向文件尾部翻一屏

    Ctrl+b: 向文件首部翻一屏

    Ctrl+d: 向文件尾部翻半屏

    Ctrl+u:向文件首部翻半屏

字符編輯

    x: 刪除光標處的字符; 

    #x: 刪除光標處起始的#個字符 

    xp: 交換光標所在處的字符及其后面字符的位置 

    ~:轉換大小寫

替換命令(r, replace) 

    r: 替換光標所在處的字符 

    R:切換成REPLACE模式

刪除命令: 

    d: 刪除命令,可結合光標跳轉字符,實現范圍刪除; 

    d$: 刪除到行尾 

    d^:刪除到非空行首 

    d0:刪除到行首 

    dw:刪除下一個單詞 

    de:刪除當前單詞

    db:刪除前一個單詞

    dd: 刪除光標所在的行 

    #dd:多行刪除 

    D:從當前光標位置一直刪除到行尾,留空行,等同于d$

復制命令

    y:復制,用法同d命令

粘帖命令

    p:緩沖區存的如果為整行,則粘貼當前光標所在行的下 方;否則,則粘貼至當前光標所在處的后面 

    P:緩沖區存的如果為整行,則粘貼當前光標所在行的上 方;否則,則粘貼至當前光標所在處的前面

六、vim的寄存器

    vim中有26個命名寄存器和一個無名寄存器,常存放不同的剪貼板內容,可以在不同的會話中共享。分別用a-z表示,例如:3"tyy表示復制三行到寄存器t中,"tp則表示將寄存器t中的內容粘貼。若未指定寄存器,將使用無名寄存器。

    vim中還有10個數字寄存器,用0-9表示,0表示最近復制的內容,1表示最近刪除的內容。當新的文本變更或刪除時,1會轉存到2中并以此類推。數字寄存器不能在不同會話中共享。

七、多文件模式

vim FILE1 FILE2 FILE3 … 

    :next    下一個 

    :prev    前一個 

    :first    第一個 

    :last    最后一個 

    :wall    保存所有 

    :qall    退出所有 

    :wqall    保存所有并退出

八、多窗口模式

    多文件分割 

        vim -o|-O FILE1 FILE2 … 

        -o: 水平分割 

        -O: 垂直分割 

        在窗口間切換:Ctrl+w, Arrow 

    單文件窗口分割: 

        Ctrl+w,s: split, 水平分割 

        Ctrl+w,v: vertical, 垂直分割 

        Ctrl+w,q:取消相鄰窗口 

        Ctrl+w,o:取消全部窗口 

        :wqall 退出

原創文章,作者:zhanghuanyu,如若轉載,請注明出處:http://www.www58058.com/32529

(0)
zhanghuanyuzhanghuanyu
上一篇 2016-08-11
下一篇 2016-08-11

相關推薦

  • linux學習第三天

            Linux學習第三天 Bash特性及文件系統介紹 cat /etc/shells cat命令進入/etc/shells/下面查看有幾種shell FHS (文件系統遵循FHS定義)     /bin  供所有用戶使用基本的用戶命令程序文件   …

    Linux干貨 2016-10-18
  • 關于 文本處理工具、正則表達式、grep 的簡單舉例

                              文本處理工具 抽取文本的工具 文件內容:less和cat 文件截?。篽ead和tail 按列抽?。篶ut 按關鍵字抽?。篻rep 文件查看命令:cat,tac,rev cat […

    系統運維 2016-08-08
  • MySQL備份與恢復

    備份與恢復 數據備份就是將數據以某種方式加以保留,以便在系統需要時重新恢復和利用。其作用主要體現在如下兩個二方面: 在數據遭到意外事件破壞時,通過數據恢復還原數據 數據備份是歷史數據保存歸檔的最佳方式 數據恢復就是把遭到破壞、刪除和修改的數據還原為可使用的數據的過程 為什么要備份數據? 在生產環境中我們數據庫可能會遭遇各種各樣的不測從而導致數據丟失, 大概分…

    Linux干貨 2016-11-25
  • 面向對象魔術方法

    ##**特殊屬性**– __name__ 類、函數、方法等的名字– __module__ 類定義所在的模塊名– __class__ 對象或類所屬的類– __bases__ 類的基類的元組,順序為它們在基類列表中出現的順序– __doc__ 類、函數的文檔字符串,如果沒有定義則為None–…

    Linux干貨 2017-11-21
  • http2

    練習:     (1)基于主機名實現三個虛擬主機     (2) 每虛擬主機使用獨立的訪問日志和錯誤日志     (3) 第三個虛擬主機的/admin要進行用戶訪問認證     (4) 在第二個虛擬主…

    Linux干貨 2016-10-09
  • 關于touch/>/>>創建同名文件的總結

    一、簡介 1、touch     即創建文件或修改文件時間     語法:touch [options] file-list 2、>     創建文件,可直接把內容生成到指定文件,會覆蓋源文件中的內容;也可以直接生成一個空白文件。     語法:> file…

    2017-02-18
欧美性久久久久