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 10:15
下一篇 2016-08-10 10:15

相關推薦

  • Bash學習基礎知識一“命令”

    Bash 學習基礎知識 目錄 一、Shell是個啥? 二、BASH的命令     2.1 命令的語法格式     2.2 什么是命令     2.4 命令的類型     …

    Linux干貨 2015-04-03
  • awk用法進階

    一、控制語句 1 if-else語句        使用場景:對awk取得的整行或某個字段做條件判斷        語法:         &nbsp…

    Linux干貨 2016-09-21
  • MBR詳解

    前言:     話說,現在買電腦如果預裝win8以上的系統,基本上都是GPT。想當年博主買的電腦預裝的win8磁盤分區樣式就是GPT,而且貌似如果想把win8換win7就得把GPT改成MPR。雖然會在最后提到GPT,不過本文還是主要講解MBR,并通過實驗驗證。 機械硬盤: 主引導記錄(Master Boot Record,縮寫:MBR),…

    Linux干貨 2016-11-14
  • Linux運維學習歷程-第四天-Linux的使用幫助和快捷鍵

    本章內容     命令存放位置     命令幫助      help     man幫助     其它幫助        命令歷史     快捷鍵 一、命令存放位置   &nbsp…

    Linux干貨 2016-08-03
  • N_28包管理器(rpm)及前端管理工具(yum)

    1、簡述rpm與yum命令的常見選項,并舉例 rpm–>RPM package manager 是一種用于redhat發行版的打包及安裝管理工具,現在成為linux領域包管理器的行業標準,包名以.rpm為后綴。 用法: rpm [options] PACKAGE_FILE 常用選項: -i:安裝rmp包 -v:顯示安裝過程 -vv:更加詳細…

    Linux干貨 2018-01-01
欧美性久久久久