上古神器vim

概述:

    在之前的篇章中,我們介紹了一些文本的處理工具,如grep、sed、cut、sort等,但是那些工具的側重點都在于有了現成的文本之后,對現有的文本進行一定條件的加工處理后,滿足我們進一步對數據的要求。但是目前為止,還沒有接觸一款專業用來編輯文本的工具,本篇就來介紹一下Linux系統上自帶的專業用來文本編輯的上古神器–vim

    本篇將分為以下幾個部分來為大家呈現vim的強大功能:

        1、vim簡介及模式切換

        2、命令模式操作技巧介紹

        3、擴展命令模式(末行模式)操作技巧介紹

        4、其他模式簡介

        5、vim運行環境定制

        

第一章    vim簡介及模式切換

    vim是一款Linux系統上的文本編輯工具,類似于windows上的txt文本編輯器,vim是早期vi的升級版本,一般常用的有三種工作模式:命令模式、編輯模式和擴展命令模式(末行模式)。他們之間的轉換關系:

    blob.png

    各模式之間的切換:

        命令–>編輯

            i:在光標所在字符處的前面插入

            I:在光標所在行的行首插入

            a:在光標所在字符處的后面插入

            A:在光標所在行的行尾插入

            o:在光標所在處的下一行,新建一行插入

            O:在光標所在處的上一行,新建一行插入

        編輯–>命令

            Esc鍵

        命令–>擴展命令

            :  執行vim某些內置命令

            /  執行向下搜索

            ? 執行向上搜索

        擴展命令–>命令

            Esc鍵

    vim命令格式:

        vim [OPTIONS] FILE1…

        OPTIONS:

            +#  打開文件后讓光標處于文檔的第#行

            +   打開文件后,光標處于最后一行

            +/PATTERN   打開文件后,光標處于第一次被模式匹配到的行

            -b   以二進制形式打開文件

            -m   以只讀方式打開文件

            -o   水平分割打開多個文件

            -O   垂直分割打開多個文件

            -d  比較兩個文件的區別

         示例:vim -d issue  issue2

        blob.png

第二章    命令模式快捷方式介紹

    保存內快捷鍵

        ZZ   保存退出

        ZQ   不保存退出

    字符間移動

        h   光標向左移動一個字符

        i   光標向右移動一個字符

        j   光標向下移動一個字符

        k   光標向上移動一個字符

        #h|i|j|k   光標向指定方向移動#個字符

    單詞間移動

        w   光標移動到下一個單詞的詞首

        e   光標移動到下一個單詞的詞尾

        b   光標移動到當前或上一個單詞的詞首

        #w|e|b   光標向單詞的指定位置移動#個單詞

    屏幕范圍內移動

        H   光標移動到本屏內容的第一行的第一個字符處

        M   光標移動到本屏內容的最中間的行的第一個字符處

        L   光標移動到本屏內容的最后一行的第一個字符處

    行內移動

        ^   光標移動到本行行首的第一個非空白字符處

        0   光標移動到本行行首,可以是空白字符

        $   光標移動到本行的行尾最后一個字符處,可以是空白字符

    行間移動

        G   光標移動到文本的最后一行

        #G   光標移動到文本的指定的第#行

        1G、gg   光標移動到文本的第一行

    句間、段間移動

        )   光標移動到下一句,第一個字符

        (   光標移動到上一句,第一個字符

        }   光標移動到下一段落,段落起始行第一個字符,有空白行分隔,即認為是段落

        {   光標移動到上一段落,段落起始行第一個字符

    翻屏操作

        Ctrl+f、PageDown   向文件尾部翻一屏,光標在屏幕第一行的第一個字符處

        Ctrl+b、PageUp   向文件首部翻一屏,光標在屏幕最后一行的第一個字符處

        Ctrl+d   向文件尾部翻半屏

        Ctrl+u   向文件首部翻半屏

    

    字符編輯

        x   刪除光標所在處的字符,后續本行內容向前移

        #x   刪除光標處開始往后的#個字符

        xp   交換光標所在處的字符及其后面字符的位置,x相當于刪除了字符,p相當于粘貼了字符

        #xp   將光標所在處的#個字符放到放到刪除后留存的第一個符的后面

        ~   轉換光標所在處字符的大小寫

    替換命令:

        r   替換光標所在處的字符為輸入的字符

        R   切換為REPLACE模式完全替換

    刪除命令:d,可結合光標跳轉字符,實現范圍刪除,內容并未真正刪除,而是保存在寄存器里面

        d$   刪除光標所在處到本行行尾的內容

        d^   刪除光標所在處到本行非空白字符行首的內容

        d0   刪除光標所在處到本行行首的內容,行首可以是空白字符

        dw   向后刪除光標所在處到下一個單詞的詞首的內容,#dw可刪除#個單詞

        de   向后刪除光標所在處到下一個單詞的詞尾的內容,#de可刪除#個單詞

        db   向前刪除光標所在處到上一個單詞的詞首的內容,#db可刪除#個單詞

        dd   刪除光標所在處的一整行內容,#dd可刪除光標所在處往后的#行內容

        D   刪除光標所在處到行尾的內容,等同于d$

        #COMMAND 可結合光標跳轉字符,實現刪除范圍內容,如d}、d)等

    復制命令:y 復制,行為類似于d命令,復制的內容存放在寄存器上

        y$   復制光標所在處到行尾的內容

        y^   復制光標所在處到行首非空白字符的內容

        y0   復制光標所在處到本行行首的內容,行首可以是空白字符

        yw   向后復制光標所在處到下一個單詞的詞首的內容,#yw可刪除#個單詞

        ye   向后復制光標所在處到下一個單詞的詞尾的內容,#ye可刪除#個單詞

        yb   向前復制光標所在處到上一個單詞的詞首的內容,#yb可刪除#個單詞

        yy   復制光標所在處的一整行內容,#yy可復制光標所在處往后的#行內容

        Y   復制整行

        #COMMAND 可結合光標跳轉字符,實現復制范圍內容,如y}、y)等

    粘貼命令:

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

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

    改變命令:c,修改后切換成編輯模式,運行后切換到編輯模式,進行編輯操作

        c$   改變當前光標所在處到本行行尾的內容 ,先刪除,后切換到編輯模式

        c^   改變光標所在處到行首非空白字符的內容,先刪除,后切換到編輯模式

        c0   改變光標所在處到本行行首的內容,行首可以是空白字符,先刪除,后切換到編輯模式

        cw   向后改變光標所在處到下一個單詞的詞首的內容,#cw可改變#個單詞,先刪除,后切換到編輯模式

        ce   向后改變光標所在處到下一個單詞的詞尾的內容,#ce可改變#個單詞,先刪除,后切換到編輯模式

        cb   向前改變光標所在處到上一個單詞的詞首的內容,#cb可改變#個單詞,先刪除,后切換到編輯模式

        cc   改變光標所在處的一整行內容,#cc可改變光標所在處往后的#行內容,先刪除,后切換到編輯模式

        C   刪除當前光標到行尾的內容,并切換成插入模式

        #COMMAND 可結合光標跳轉字符,實現復制范圍內容,如c}、c)等

    撤銷更改:

        u   撤銷最近一次的更改

        #u   撤銷之前#次的更改

        U   撤銷本行的所有更改

        .   重復前一個操作

        #.   重復前一個操作#次

    其他特殊用法:

        50  i  STRING  Esc鍵  相當于粘貼50次STRING到i插入的字符處

        <START_POSOTION><COMMAND><END_POSITION>

            支持的COMMAND:

                y復制、d刪除、gU變大寫、gu變小寫

            例如:0y$表示從行首復制到行尾

                  ggy10G表示從第一行復制到第10行

                  ye表示從當前位置拷貝到本單詞的最后一個位置

                  gggUG 表示從第一行到最后一行全轉換成大寫

    

    

第三章    擴展命令模式(末行模式)快捷方式介紹

    保存退出內命令

        :w   存盤,保存

        :q   不保存退出

        :q!   強制不保存退出

        :wq   保存退出

        :wq!  強制保存退出

        :x   保存退出

    讀取另存文件:

        :r /PATH/TO/FILE   讀取指定文件內容到當前文件光標所在行的下方

        :w /PATH/TO/FILE   將當前文件的內容寫入到另一個指定文件中,相當于另存

    

    運行外部命令:

        :!COMMAND   在不退出vim界面的情況下,執行shell命令,單獨另起一個界面,顯示命令結果,顯示完,按任意鍵退回到vim界面

        :r!COMMAND   在不退出vim界面的情況下,執行shell命令,并將命令結果寫入到當前光標所在處的下方

        示例:vim擴展命令行模式下運行:r!ls /root

        blob.png

    地址定界

        :#   光標移動到第#行

        :#1,#2   從第#1行到第#2行

        :#1,+#2   從第#1行開始,加上其之后的#2行的內容

            如:2,+3  表示第2到第5行的內容

        :.   表示當前行

        :$   表示最后一行

            如: .,$-1  表示從當前行到倒數第二行

        :%   表示全文,相當于1,$

        :/PATTREN1/,/PATTERN2/  從第一次被PATTERN1模式匹配到的行開始,一直到第一次被PATTERN2模式匹配到的行結束

            如:3,/^root/  表示從第3行開始到第一次匹配到行首為root的行結束,中間的所有的行

                /^root/,5   表示從第一次匹配到行首為root的行開始,到第5行,中間的所有的行

    編輯命令:配合地址定界命令使用,實現編輯動作

        d   表示刪除

        y   表示復制

        w /PATH/TO/FILE   表示指定范圍的行另存到指定文件中

        r /PATH/TO/FILE   表示在指定位置插入指定文件中的內容,如果地址定界是范圍,則范圍內的每行都加入指定文件的內容

    查找

        /PATTERN   表示從當前光標所在處向下查找指定的內容,支持正則表達式

        ?PATTERN   表示從當前光標所在處向上查找指定的內容,支持正則表達式

        查找到后,n顯示與命令方向相同的下一個匹配到的內容,N顯示與命令方向相反的下一個內容

    查找并替換:可與地址定界結合使用,實現范圍內的查找替換

        格式:s/要查找的內容/替換為的內容/修飾符

        要查找的內容支持正則表達式,替換為的內容支持后向引用,如\1,\2,&等

        修飾符:

            i  查找時忽略大小寫

            g  全局替換,默認情況下,每行只替換第一次匹配到的內容

            gc   全局替換,每次替換時詢問

        如:查找文件中以空白字符開頭的行,在該行前面加上#號

        blob.png

第四章    其他模式簡介

    1、可視化模式:類似利用鼠標操作的選定內容,然后利用文字的編輯命令如d、y、s///等進行處理

        命令模式–>可視化模式:

            v   切換到可視化模式,針對字符選取

            V   切換到可視化模式,針對行選取

            Ctrl+v   切換到可視化模式,針對塊選?。愃七x取某些行的位置相同的字段

        v的界面:

        blob.png


        V的界面

        blob.png

        Ctrl+v的界面

        blob.png

        選取了相關內容后,可利用d、y等編輯命令進行編輯操作

    2、多文件模式

        vim FILE1  FILE2…

        利用上述vim打開多個文件時,就是進入了多文件模式,屏幕只同時顯示一個文件的內容

        可利用:

            :next   切換到下一個文件

            :prev   切換到上一個文件

            :first   切換到第一個文件

            :last   切換到最后一個文件

            :wall   保存所有文件

            :qall   退出所有

            :wqall   保存并退出所有

        vim -o FILE1 FILE2…水平分割,一個屏幕水平顯示多個文件

        vim -O FILE1 FILE2…垂直分割,一個屏幕垂直顯示多個文件

            在多個窗口間切換:Ctrl+w,然后按上下左右鍵進行窗口切換

        blob.png  

        blob.png    

        單文件窗口分割:

            Ctrl+w,s   水平分割

            Ctrl+w,v   垂直分割

            Ctrl+w,q   關閉相鄰窗口

            Ctrl+w,o   關閉全部窗口

            :wqall   保存并退出所有

        blob.png

第五章    vim運行環境定制

    vim的諸多運行屬性都可定義,定義方式包括支持直接在vim界面,擴展命令模式下運行:set OPTION  即可設置,該種設置方式只對當前vim的運行界面生效,要想對某個用戶在運行的時候都啟用該種特性,則需要將該設置命令寫入到該用戶家目錄下的.vimrc文件中,該文件可能默認不存在,可手動創建該文件;如果想對所有用戶都啟用該特性,則可以將該屬性定義在/etc/vimrc配置文件中

    常見的屬性有:

        set all或set  在擴展命令模式時,運行該命令,可以查看所有可供定制的選項信息

        set number   可設置顯示行號,可縮寫為set nu

        set nonumber   可取消顯示行號,可縮寫為set nonu

        set tabstop=4   可設置tab鍵的縮進字符數量,默認是8個字符

        set showmatch   可設置括號成對匹配,可縮寫為set sm

        set nosm   可設置取消括號成對匹配

        set ai   可設置自動縮進,也就是設置換行時,下一行跟上一行的起始位置自動一樣,默認是在第一字符

        set noai   可禁用自動縮進

        set hlsearch   設置高亮顯示搜索內容

        set nohlsearch   禁用高亮顯示搜索內容

        syntax on   啟用語法高亮顯示

        syntax off  禁用語法高亮顯示

        set ic   忽略字符大小寫

        set noic  不忽略字符大小寫

        fileformat=unix   將文件轉碼為unix文本格式

        fileformat=dos   將文件轉碼為dos文本格式,也就是windows文本格式

        set textwidth=65   設置vim文本的寬度為65個字符

        help option-list   顯示幫助列表   

原創文章,作者:M20-1倪文超,如若轉載,請注明出處:http://www.www58058.com/32432

(0)
M20-1倪文超M20-1倪文超
上一篇 2016-08-10 12:18
下一篇 2016-08-10 13:58

相關推薦

  • 推薦-運維學習筆記-Puppet應用配置的工作原理

    背景知識 Puppet的核心功能是配置管理。一般來說,用戶在master上集中做配置,同時,被管理節點上的agent會定期從master上下載配置數據,再應用(apply)到本地,從而使管理節點的狀態(用戶,組,文件,安裝包,服務等的設置和運行狀態)與masters上定義的保持一致。 有時,出于測試的目的,并不希望真的應用配置,那么就需要執行puppet a…

    2016-06-01
  • Keepalived實現nginx雙主

    一、架構描述與應用 1. 應用場景 大多數的互聯網公司都會利用nginx的7層反向代理功能來實現后端web server的負載均衡和動靜分離。這樣做的好處是當單臺后端server出現性能瓶頸時可以對其進行橫向擴展從而提高整個系統的并發,同時也可以通過后端server提供的http或tcp監控接口對其進行健康檢查實現自動Failover和Failback。&n…

    Linux干貨 2016-07-16
  • 文本處理工具之AWK

    概述:     在之前的文章中,我們介紹過文本處理三劍客的grep、sed,本篇就簡要說明下awk的用法。主要是圍繞常見的一些用法進行展開,分為以下幾個部分:     1、awk的基礎語法     2、awk的進階語法  &nbs…

    Linux干貨 2016-09-20
  • 磁盤分區及初步文件系統

    磁盤分區 磁盤分區有兩種方式:     MBR, GPT      MBR: Master Boot Record,1982年,使用32位表示扇區數 ,分區不超過2T      分區時按柱面…

    Linux干貨 2016-08-30
  • N-22-南京-修 第四周博客作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@localhost xujie]# cp -a /etc/skel /home/tuser1 [root@localhost home]# chmod -R 700 tuser1 之前 [root@localho…

    Linux干貨 2016-09-15
欧美性久久久久