vim編輯器

一、vim編輯器簡介

    文本:ASCII,Unicode

    文本編輯種類:

    行編輯器:sed

    全屏編輯器:nano,vi

    vim-Vi Improved

其他編輯器:

    gedit:一個簡單的圖形編輯器

    gvim:一個VIm編輯器的圖形版本

二、vim打開文件

    vim option file…

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

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

        +:打開文件后,光標在最后一行

        -b:二進制方式打開文件

        -d file1 file…:比較多個文件

        -m:只讀打開文件

        -e或ex:直接進入ex模式

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

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

vim是一個模式編輯器

    擊鍵行為是依賴vim的“模式”

    三種主要模式

        命令模式(默認):移動光標,查看文件,

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

        擴展命令模式(末行):保存,退出,執行命令

    Esc退出當前模式

三、模式轉換

    命令模式 → 插入模式

    i:在光標所在處輸入

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

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

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

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

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

    插入模式 → 命令模式

    Esc

    命令模式 → 擴展模式

    

    擴展模式 → 命令模式

    Esc

    鎖定:Ctrl+s

    解鎖:Ctrl+q

五、關閉文件

    擴展模式

    q:退出

        q?。簭娭仆顺?,丟棄做出的修改

        wq:保存退出

        x保存退出

    命令模式

        ZZ:保存退出

        ZQ:不保存退出

六、擴展模式操作

    按“:”進入ex模式

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

    w:寫(存)磁盤文件

    wq:寫入并退出

    x:寫入并退出

    q:退出

    q?。翰淮姹P退出,更改無效

    r file1 :讀file1文件內容到當前文件中

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

    !command:執行命令

    r!command:

    地址界定

        start_pos,end_pos

        n:第n行

        n,m:從n行到m行

        n,+m:從n行到n+m行

        .:當前行

        $:最后一行

        .,$:當前行到倒數第二行

        %:全文,相當于1,$

        /pattern/

            /pat1/,/pat2/:從第一次被pat1模式匹配到的行到第一次被pat2匹配到的行

            n,/pat/:從n行到被pat模式匹配到的行

            /pat/,$:從被pat模式匹配到的行到最后一行

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

                d:刪除

                y:復制

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

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

        查找

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

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

                n:與命令同方向

                N:與命令反方向

        查找并替換

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

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

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

            替換為的內容:不能使用模式,但可以使用\1,\2…等后向引用符號,還可以使用&引用前面查找是查找到的整個內容

            修飾符

                i:忽略大小寫

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

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

            查找替換中的分個符/可替換為其他字符s@@@,s###

        

        編輯二進制文件

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

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

                %!xxd

            編輯二進制文件

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

                %!xxd -r

            保存退出

七、命令模式操作

    光標跳轉

        字符間跳轉

            h:向左

            j:向下

            k:向上

            l:向右

            n command:跳轉由n指定一次跳轉的單詞數

        單詞間跳轉

            w:下一個單詞的詞首

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

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

            n command:跳轉由n指定一次跳轉的單詞數

        當前頁跳轉

            H:頁首

            M:頁中間行

            L:頁底

        行首行尾跳轉

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

            0:跳轉至行首

            &:跳轉至行尾

        行間移動:

            nG:跳轉至由n制定航

            G:最后一行

            1G或gg:第一行

        句間移動:

            (:下上一句

            ):下一句

        段落間移動

            {:上一段

            }:下一段

    翻屏

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

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

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

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

    字符編輯

        x:刪除光標處的字符

        nx:刪除光標處起始的n個字符

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

        ~:轉換大小寫

    替換命令(r,replace)

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

        R:切換成replace模式

    刪除命令;

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

        d$:刪除到行尾

        d^:刪除到非空行首

        d0:刪除到行首

        dw:刪除下一個單詞

        de:刪除當前或下一個單詞

        db:刪除當前或上一個單詞

        dd:刪除光標所在的行

        ndd:多行刪除

        D:刪除光標到行尾,留空行。等同于d$

    復制命令(y,yank)

        y:復制,結合光標跳轉字符,實現范圍復制

        y$:復制到行尾

        y^:復制到非空行首

        y0:復制到行首

        yw:復制下一個單詞

        ye:復制當前或下一個單詞

        yb:復制當前或上一個單詞

        yy:復制光標所在的行

        nyy:多行復制

        y:復制整行

    粘貼命令(p,paste)

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

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

    改變命令(c,change)

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

        命令模式 → 插入模式

            c$:刪除到行尾輸入新內容

            c^:刪除到非空行首輸入新內容

            c0:刪除到行首輸入新內容

            cw:刪除下一個單詞輸入新內容

            ce:刪除當前或下一個單詞輸入新內容

            cb:刪除當前或上一個單詞輸入新內容

            cc:刪除光標所在的行輸入新內容

            ncc:多行刪除輸入新內容

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

    100wang Esc:粘貼“wang”100次

    start position command end position

    command

        y:復制

        d:刪除

gU:變大寫

gu:變小寫

    例:0y$

        0→先到行頭

        y→從這里開始拷貝

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

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

    撤銷更改

        u:撤銷最近的更改

        nu:撤銷之前n次更改

        U:撤銷光標落在這行后所有此行的更改

        Ctrl+r:重做最后的撤銷更改

        .:重復前一個操作

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

八、vim的寄存器

    有26個命名寄存器和1個無名寄存器,常存放不同的剪貼板內容,可以不同會話間共享。

    用a,b,c…z表示,用"寄存器表示,放在數字和命令之間

        例:3"tyy表示復制3行到t寄存器中

        "tp表示將t寄存器內容粘貼

    未指定,將使用無名寄存器,有10個數字寄存器。

    用0,1,2…9表示,0存放最近復制內容,1存放最近刪除內容。

    當新的文本變更和刪除是,1轉存到2,2轉存到3,以此類推。

    數字寄存器不能在不同會話間共享

九、可視化模式

    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 上下

    單個文件窗口分割

        Ctrl+w,s:水平分割

        Ctrl+w,v:垂直分割

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

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

        :wqall退出

十二、定制vim的工作特性

    全局:/etc/vimrc

    個人:~/.vimrc

    擴展模式:當前vim進程有效

        行號

            顯示:set number,簡寫set nu

            取消顯示:set monumber

        括號成對匹配

            匹配:set showmatch,簡寫set sm

            取消匹配:set nosm

        自動縮進

            啟用:set ai

            禁用:set noai

        高亮搜索

            啟用:set hlsearch

            禁用:set nohlsearch

        語法高亮

            啟用:syntax on

            禁用:syntax off

        忽略字符的大小寫

            啟用:set ic

            不忽略:set noic

        文件格式

            啟用:fileformat=unix

            不忽略:fileformat=dos

        設置文本寬度

            set trxtwidth=65(vim only)    左面開始65個字符

            set wrapmargin=15  右面開始15個字符

            標準豎20字符,橫80字符

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

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

相關推薦

  • N22-冥界之王-第7周作業

    1、創建一個10G分區,并格式為ext4文件系統;   (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;       在虛擬機里新添加一塊磁盤20G,/dev/sdb     &…

    Linux干貨 2016-09-26
  • shell腳本編程基礎

    ★ 編程基礎★ 腳本基本格式★ 變量★ 運算★ 條件測試★ 配置用戶環境一.編程基礎  程序:指令+數據  程序編程風格:      過程式:以指令為中心,數據服務于指令      對象式:以數據為中心,指令服務于數據  shell程序:提供了編程能力,解釋執行&nbs…

    Linux干貨 2017-03-28
  • 正則表達式30分鐘入門教程

    來園子之前寫的一篇正則表達式教程,部分翻譯自codeproject的The 30 Minute Regex Tutorial。 由于評論里有過長的URL,所以本頁排版比較混亂,推薦你到原處查看,看完了如果有問題,再到這里來提出. 一些要說的話: 如果你沒有正則表達式的基礎,請跟著教程“一步步來”。請不要大概地掃兩眼就說看不懂——以這種態度我寫成什么樣你也看不…

    2015-03-12
  • 文件的查找命令 find 和 locate

    文件的查找命令 find 和 locate find 功能:實時查找工具,通過遍歷指定路徑完成文件查找 工作特點: ?  查找速度略慢?  精確查找?  實時查找?  可能只搜索用戶具備讀取和執行權限的目錄 語法:   find [OPTION]… [查找路徑] [查找條件] [處理動作] 查找路徑:指定具…

    Linux干貨 2016-08-16
  • 9.腳本練習

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; ?declare?-a?shell ????declare?sum_login=0 ????declare?sum_nologin=0 ????shell=($(cat?/etc/pass…

    2017-09-20
欧美性久久久久