Linux下vim編輯器的使用

vim編輯器

概括

vim,是vi的升級版本,它不僅兼容vi的所有指令,還有一些新的特性在里面。



使用vi和vim的三種主要模式

vim在工作過程當中有三種模式,編輯模式(命令模式)、輸入模式、末行模式

    1、編輯模式:也叫命令模式,鍵盤操作常被理解為編輯命令;

    2、輸入模式:在文本文件當中輸入內容;

    3、末行模式:其內置的命令行接口,用于執行內置命令。

        三種模式之間的轉換:

2016-08-10_083610.png


            Esc鍵退出當前模式,總是返回到命令模式

                

    

打開文件的方法:

    vim + 文件名便可以打開,也可以加上參數,達到自己想要的目的

  # vim [OPTION]… FILE…
        +#: 打開文件后,直接讓光標處于第#行的行首
        +/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首
        vim + file 直接打開file,光標在最后一行
        vim –b file 二進制方式打開文件
        vim –d file1 file2… 比較多個文件
        vim -m file 只讀打開文件
        ex file 或vim –e 直接進入ex模式
        如果該文件存在,文件被打開并顯示內容
        如果該文件不存在,當編輯后第一次存盤時創建它

QQ截圖20160810085604.jpg

QQ截圖20160810085946.jpg

QQ截圖20160810090355.jpg


編輯模式:


    光標移動:可以使用h,j,k,l鍵來進行光標的移動

        h:左

        l:右

        j:下

       k:上

    還支持數字跳轉:#{h|j|k|l}:跳轉#個字符

    

    單詞間移動:可以使用w,e,b鍵來進行移動

        w:下一個單詞詞首

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

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

        #{w|e|b}:同上

    

    行內移動:

        ^:行首第一個非空白字符

        0:絕對行首

        $:絕對行尾

QQ截圖20160810093107.jpg

               

QQ截圖20160810093150.jpg

    編輯模式下的命令:    

        字符編輯:
            x: 刪除光標處的字符;
            #x: 刪除光標處起始的#個字符
            xp: 交換光標所在處的字符及其后面字符的位置
            ~:轉換大小寫

        替換命令(r, replace)
            r: 替換光標所在處的字符
            R:切換成REPLACE模式

QQ截圖20160810113233.jpg

        刪除命令:
            d: 刪除命令,可結合光標跳轉字符,實現范圍刪除;
            d$: 刪除到行尾
            d^:刪除到非空行首
            d0:刪除到行首
            dw:
            de:
            db:
            #COMMAND

            dd: 刪除光標所在的行

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

QQ截圖20160810112929.jpg

 QQ截圖20160810113026.jpg

      復制命令(y, yank):

            行為相似于d命令

            yy:復制行

                #yy: 復制多行

            Y: 復制整行

        

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

    改變命令(c, change)
        c: 修改后切換成插入模式

        cc:刪除當前行并輸入新內容

            #cc:從光標所在處的行到下面的第#行,刪除行并進入插入模式

                如下所示,3cc

QQ截圖20160810095022.jpg

       

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

    撤銷更改:如果不小心刪除了文件內容,可以熟用u撤銷上一步

            u撤銷最近的更改

                #u撤銷之前多次更改
            U撤消光標落在這行后所有此行的更改
            按Ctrl-r重做最后的“撤消”更改
            . 重復前一個操作
            n.重復前一個操作n次

QQ截圖20160810112529.jpg

QQ截圖20160810112801.jpg

末行模式:

    1、地址定界

        :start_pos,end_pos
        #: 具體第#行,例如2表示第2行;
        #,#: 從左側#表示行起始,到右側#表示行結尾
        #,+#: 從左側#表示的行起始,加上右側#表示的行數
        :2,+3 表示2到5行
        .: 當前行
        $: 最后一行
        .,$-1 當前行到倒數第二行
        %:全文, 相當于1,$

        /pat1/,/pat2/:從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束。
        #,/pat/:從第#行開始到第一次匹配到/pat/位置;

        /pat/,$:從第一次匹配到/pat/到最后一行。

        

        使用方式:后跟一個編輯命令

        d:刪除

            /UUID/,$d可以發現后面的UUID全部沒了,從第一匹配到行尾之間的內容全部刪除

QQ截圖20160810100546.jpg

        y:復制

QQ截圖20160810101058.jpg

        w file: 將范圍內的行另存至指定文件中
        r file:在指定位置插入指定文件中的所有內容

    

    查找:

        /PATTERN:從當前光標所在處向文件尾部查找
        ?PATTERN:從當前光標所在處向文件首部查找
        n:與命令同方向
        N:與命令反方向

QQ截圖20160810112257.jpg

    查找并替換:

        s: 在擴展模式下完成查找替換操作
            格式:s/要查找的內容/替換為的內容/修飾符
            要查找的內容:可使用模式
            替換為的內容:不能使用模式,但可以使用\1, \2, …

    修飾符:
        i: 忽略大小寫
        g: 全局替換;默認情況下,每一行只替換第一次出現

QQ截圖20160810102849.jpg        gc:全局替換,每次替換前詢問

        注意:前面一定要有地址定界,否則是匹配你當前光標所在出的那一行。

QQ截圖20160810103128.jpg

vim的寄存器

    有26個命名寄存器和1個無命名寄存器,常存放不同的剪貼版內容,可以不同會話間共享。
    用a,b,…,z表示,用“寄存器表示,放在數字和命令之間
    如:3"tyy 表示復制3行到t寄存器中
    "tp 表示將t寄存器內容粘貼



可視化模式:允許選擇的文本塊
    v面向字符
    V面向行
    ctrl-v 面向塊 


QQ截圖20160810104320.jpg  可以對選中的內容進行操作,突出顯示的文字可以被刪除,復制,變更,過濾,搜索/替換等。

     QQ截圖20160810104502.jpg  對上圖的內容執行了d刪除操作



多文件模式:

    vim FILE1 FILE2 FILE3 …

        :next 下一個
        :prev前一個
        :first 第一個
        :last 最后一個
        :wall 保存所有
        :qall退出所有
        :wqall


QQ截圖20160810104720.jpg

QQ截圖20160810104912.jpg QQ截圖20160810104919.jpg    多文件分割:將屏幕分開,可以將所所選文件同時顯示

        vim -o|-O FILE1 FILE2 …
        -o: 水平分割
        -O: 垂直分割
        在窗口間切換:Ctrl+w, Arrow 

QQ截圖20160810105149.jpg

QQ截圖20160810105311.jpg     使用Ctrl+w可在窗口間切換



    單文件窗口分割:
        Ctrl+w,s: split, 水平分割
        Ctrl+w,v: vertical, 垂直分割
        ctrl+w,q:取消相鄰窗口
        ctrl+w,o:取消全部窗口
        :wqall退出

QQ截圖20160810110443.jpg

    同樣使用ctrl+w在窗口之間進行切換。


定制vim的工作特性:

    可以看出每當我使用vim打開一個文件時候,他都會都在每行的前面顯示行號,也會對某些部分進行著色,因為我再個人配置文件~/.vimrc添加了一些vim的內置命令

        (1) 行號
            顯示:set number, 簡寫為set nu
            取消顯示:set nonumber, 簡寫為set nonu
        (2) 括號成對匹配
            匹配:set showmatch, 簡寫為set sm
            取消:set nosm

        (3) 自動縮進
            啟用:set ai
            禁用:set noai
        (4) 高亮搜索
            啟用:set hlsearch
            禁用:set nohlsearch
        (5) 語法高亮
            啟用:syntax on
            禁用:syntax off
       (6) 忽略字符的大小寫
            啟用:set ic
            不忽略:set noic 

        增加這些設置可以使你得vim更具有可讀性,特別是bash腳本中的一些語法高亮,顯示明顯。

QQ截圖20160810111808.jpg 

這是我家目錄下的.vimrc的文件,在此我設置了顯示行號,語法高亮以及自動縮進功能。

原創文章,作者:我的滑板鞋,如若轉載,請注明出處:http://www.www58058.com/32351

(0)
我的滑板鞋我的滑板鞋
上一篇 2016-08-10
下一篇 2016-08-10

相關推薦

  • 磁盤管理

                              磁盤管理 fdisk分區管理工具 :fdisk ,parted,sfdisk      fdisk:對于一塊硬盤來講,…

    Linux干貨 2015-10-14
  • Bonding多塊網卡綁定同一IP地址

    Bonding多塊網卡綁定同一IP地址 就是將多塊網卡綁定同一IP地址對外提供服務,可以實現高可用或者負載均衡。當然,直接給兩塊網卡設置同一IP地址是不可能的。通過bonding,虛擬一塊網卡對外提供連接,物理網卡的被修改為相同的MAC地址。 一共有七種模式這里提供三種常用的:   一、Mode 0 (balance-rr)  輪轉( Round-robin…

    Linux干貨 2016-09-07
  • linux 3.26 第一課

    setup app

    2018-03-26
  • N26-第一周

    描述計算機的組成及功能。 計算機主要由運算器,控制器,存儲器,輸入、輸出設備五大部件組成 運算器(Arithmetic Logic Unit, ALU):實現各種算數運算和邏輯運算(與控制器組成cpu)。 控制器(Control Unit, CU):計算機控制中心,根據程序規定的控制程序進行解釋,根據要求進行調度,控 制協調各部分有條不紊的運行。 存儲器(M…

    Linux干貨 2017-02-03
  • N25-第十一周

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 發送者: 1.使用單項加密算法提取生成數據的特征碼 2.使用自己的私鑰加密特征碼附加在數據后面 3.生成用于對稱加密的臨時密鑰 4.用此臨時密鑰加密數據和已經使用私鑰加密后的特征碼 5.使用接收方的公鑰加密此臨時密鑰,附加在對稱后的數據后方 接收方: 1.使用自己的私鑰解密的臨時秘鑰;從而獲得對方的對稱密鑰 2…

    2017-06-05
  • 搭建私有CA服務器

       CA(Certificate Authority)證書頒發機構主要負責證書的頒發、管理以及歸檔和吊銷。證書內包含了擁有證書者的姓名、地址、電子郵件帳號、公鑰、證書有效期、發放證書的CA、CA的數字簽名等信息。證書主要有三大功能:加密、簽名、身份驗證。下面來看一下自建CA的過程    一、建立CA服務器 &nbsp…

    Linux干貨 2016-03-14
欧美性久久久久