vim編輯器

一、vim簡介

   vi: Visual Interface,文本編輯器

    文本: ASCII, Unicode

    文本編輯種類:

        行編輯器: sed

        全屏編輯器: nano, vi

        vim – Vi Improved

    其他編輯器:

        gedit 一個簡單的圖形編輯器

        gvim 一個Vim編輯器的圖形版本

二、常見使用方法:

    vim [OPTION]… FILE…

    文件操作:

        打開文件:

            +#: 打開文件后,直接讓光標處于第#行的行首

            +/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首

            vim + file 直接打開file,光標在最后一行

            vim –b file 二進制方式打開文件

            vim –d file1 file2… 比較多個文件

            vim -m file 只讀打開文件

            ex file 或 vim –e 直接進入ex模式

            如果該文件存在,文件被打開并顯示內容

            如果該文件不存在,當編輯后第一次存盤時創建它

        關閉文件:

            擴展模式:

                :q 退出

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

                :wq 保存退出

                :x 保存退出

            命令模式

                ZZ: 保存退出

                ZQ:不保存退出

   

        以二進制方式打開文件

             vim –b binaryfile

            ? 擴展命令模式下,利用xxd命令轉換為可讀的十六進制

                :%!xxd

            ? 編輯二進制文件

            ? 擴展命令模式下,利用xxd命令轉換回二進制

                :%!xxd –r

                ? 保存退出

    模式轉換

        vim 三種模式:

        三種主要模式:

            命令模式(默認):移動光標,剪切/粘貼文本

            插入(編輯)模式:修改文本

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

        Esc鍵 退出當前模式

        Esc鍵 Esc鍵 總是返回到命令模式

        模式切換示意圖:

vim modern.PNG

        命令模式 –> 插入模式

            i: insert, 在光標所在處輸入

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

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

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

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

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

        插入模式 —-> 命令模式

            ESC

        命令模式 —-> 擴展模式

            :

        擴展模式 —-> 命令模式

            ESC

            鎖定和解鎖:CTRL+s,Ctrl+q

        (注:即使在鎖定的情況下,用戶只是看不到輸入內容,實際上依然在輸入狀態,解鎖后可以看到輸入內容)  

   

    拓展模式:

            按“ :”進入Ex模式

            ? 創建一個命令提示符:,處于底部的屏幕左側

            ? 命令:

            w 寫(存)磁盤文件

            wq 寫入并退出

            x 寫入并退出

            q 退出

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

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

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

            !command  調用bash 直接執行命令,無需退出

            r!command   調用cmd的執行結果,效果類似 `cmd`

    命令模式:

         字符間跳轉:

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

            #COMMAND:跳轉由#指定的個數的字符;

         單詞間跳轉:

            w:下一個單詞的詞首

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

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

            #COMMAND:由#指定一次跳轉的單詞數

         當前頁跳轉:

            H:頁首 M:頁中間行 L:頁底

         行首行尾跳轉:

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

            0: 跳轉至行首

            $: 跳轉至行尾

         行間移動:

            #G、擴展模式: # :跳轉至由#指定行

            G:最后一行

            1G, gg: 第一行

         句間移動:

            ):下一句 (:上一句

            ? 段落間移動:

            }:下一段 {:上一段

          翻屏操作:

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

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

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

        字符編輯:

            x: 刪除光標處的字符;

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

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

            ~:轉換大小寫

        替換命令(r, replace)

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

            R:切換成REPLACE模式

        刪除命令:

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

            d$: 刪除到行尾

            d^:刪除到非空行首

            d0:刪除到行首

            dw: 刪除至下一個單詞詞首

            de:刪除至下一個單詞詞尾

            db:刪除至當天或者上一個單詞詞首

            #COMMAND ?

            dd: 刪除光標所在的行

            #dd:多行刪除

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

            (u 撤銷上一次刪除)

        復制命令(y, yank):

            y: 復制,行為相似于d命令

            y$ 復制當前光標處到行尾內容

            y0 復制行首到當前光標處的內容

            y^復制至非空格行行首間的內容

            ye 復制當前光標處到下一個單詞的詞尾的內容

            yw 復制當前光標處到下一個單詞的詞首的內容

            yb 復制當前前一個單詞的詞首間的內容

            #COMMAND

            ? yy:復制行

            #yy: 復制多行

            ? Y: 復制整行

        粘貼命令(p, paste):

            p:緩沖區存的如果為整行,則粘貼當前光標所在行的下

            方;否則,則粘貼至當前光標所在處的后面

            P:緩沖區存的如果為整行,則粘貼當前光標所在行的上

            方;否則,則粘貼至當前光標所在處的前面

        改變命令(c, change)

            c: 修改后切換成插入模式

            ? 命令模式 –> 插入模式

            c$  刪除當前光標處到行尾內容并進入插入模式

            c^ 刪除當前光標處到行首內容并進入插入模式

            c0 刪除行首到當前光標處內容并進入插入模式

            cb 刪除當前前一個單詞的詞首間的內容并進入插入模式

            ce 刪除當前光標處到下一個單詞的詞尾的內容并進入插入模式

            cw 刪除當前光標處到下一個單詞的詞首的內容并進入插入模式

            #COMMAND

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

            #cc:

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

        其他應用:

            100iwang [ESC] 粘貼“ wang” 100次

            ? <start position><command><end position>

            ? Command:

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

            例如 0y$ 命令意味著:

            0 → 先到行頭

            y → 從這里開始拷貝

            $ → 拷貝到本行最后一個字符

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

        撤銷更改:

            ? u撤銷最近的更改

            ? #u撤銷之前多次更改

            ? U 撤消光標落在這行后所有此行的更改

            ? 按Ctrl – r重做最后的“撤消”更改

            ? . 重復前一個操作

            ? n.重復前一個操作n次

    拓展模式:

        地址定界

            :start_pos,end_pos

            #: 具體第#行,例如2表示第2行;

            #,#: 從左側#表示行起始,到右側#表示行結尾

            #,+#: 從左側#表示的行起始,加上右側#表示的行數

            : 2,+3 表示2到5行

            .: 當前行

            $: 最后一行

            .,$-1 當前行到倒數第二行

            %:全文, 相當于1,$

            /pat1/,/pat2/

            從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束

            #,/pat/

            /pat/,$

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

            d y

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

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

        查找

            /PATTERN:從當前光標所在處向文件尾部查找

            ?PATTERN:從當前光標所在處向文件首部查找

            n:與命令同方向

            N:與命令反方向

        查找并替換:

            s: 在擴展模式下完成查找替換操作

            (注意在s前加入%,全局搜索)

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

            要查找的內容:可使用模式

            替換為的內容:不能使用模式,但可以使用\1, \2, …等后向引用符號;還可以使用“

            &”引用前面查找時查找到的整個內容

            修飾符:

            i: 忽略大小寫

            g: 全局替換;默認情況下,每一行只替換第一次出現

            gc:全局替換,每次替換前詢問

            查找替換中的分隔符/可替換為其它字符,例如

            s@/etc@/var@g

            s#/boot#/#i

    可視化模式:

        允許選擇的文本塊

            v 面向字符

            V 面向行

            ctrl-v 面向塊

        可視化鍵可用于與移動鍵結合使用:

            w, ) , } ,箭頭等

        突出顯示的文字可以被刪除,復制,變更,過濾,搜索/替換等

            多文件模式(多窗口模式)

            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 退出

  vim 工作特性定制:

       配置文件:永久有效

            全局: /etc/vimrc

            個人: ~/.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

            ? (7) 文件格式

            啟用: fileformat=unix

            不忽略: fileformat=dos

            ? (8) 設置文本寬度

            :set textwidth=65 (vim only)

            :set wrapmargin=15

            ? :help option-list

            ? :set or :set all

      ? vi/vim內置幫助

        :help

        :help topic

        Use :q to exit help

        ? Vimtutor

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

(0)
ldt195175108ldt195175108
上一篇 2016-08-10
下一篇 2016-08-10

相關推薦

  • 文件、目錄權限

    批量創建新用戶: newusers passwd格式文件 批量創建用戶,必須和/etc/passwd下的文件格式一樣   下面開始批量創建:   首先準備好一個文件:用vi命令建一個user.txt 如圖: 然后用cat user.txt 然后newusers批量創建,cat /etc/passwd查看下: 創建成功 批量修改用…

    Linux干貨 2016-08-04
  • LInux用戶和組管理詳解

    一、用戶和組的概念 Linux系統是多任務、多用戶的分時操作系統。用戶要使用系統資源,需要向管理員驗證身份,由管理員進行認證和授權,并對用戶的行為進行追蹤和審計,以保障系統資源的合理分配以及系統的安全。 要達到賬號管理的目的,需要對用戶和用戶組進行管理。下面分別來介紹用戶管理和用戶組管理。 每個用戶都有唯一的一個編號來標識,這個標識號叫Uid,每個用戶至少屬…

    Linux干貨 2016-08-02
  • Linux中文件管理類命令初探

    Linux中文件管理類命令初探 文件管理通常指的是對文件或者目錄進行的類似復制、移動、刪除操作。 1. 文件的復制 cp 在Linux中使用cp指令完成文件復制工作,即copy之意。實際操作中又可以分為以下兩種情況: 單源復制 單源復制即復制的源只有一個,這個源可以為文件或者目錄。命令語法:cp [OPTION]… [-T] SOURCE DEST在實際…

    Linux干貨 2016-11-06
  • Linux 第四天: (07月28日) 練習和作業

    Linux 第四天: (07月28日) 練習和作業         定義別名命令baketc, 每天將/etc/目錄下所有文件, 備份到/testdir獨立的子目錄下, 并要求子目錄格式為backupYYYY-mm-dd, 備份過程可見 alias baketc='cp -a /etc/ /testdir/b…

    Linux干貨 2016-08-08
  • CPU 處理器架構知識

    CPU處理器架構: 主要有ARM、X86/Atom、MIPS、PowerPC,其中ARM在智能手機上面一枝獨秀;其中ARM/MIPS/PowerPC均是基于精簡指令集機器處理器的架構;X86則是基于復雜指令集的架構,Atom是x86或者是x86指令集的精簡版。 Android在支持各種處理器的現狀: ARM+Android 最早發展、完善的支持,主要在手機市…

    Linux干貨 2015-08-03
欧美性久久久久