1. 程式人生 > >vim的基本用法和參數

vim的基本用法和參數

Linux 學習 參數

VIM簡介
vi: Visual Interface,文本編輯器
文本:ASCII, Unicode
文本編輯種類:
行編輯器: sed
全屏編輯器:nano, vi
vim - Vi Improved
其他編輯器:
gedit 一個簡單的圖形編輯器
gvim 一個Vim編輯器的圖形版本

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

模式:  
    擊鍵行為是依賴於 vim的 的“模式” 
    三種主要模式: 
        命令(Normal)模式:默認模式,移動光標,剪切/粘貼文本 ?hjkl上下左右
        插入(Insert)或編輯模式: 修改文本 
        擴展命令(extended command )模式: 保存,退出等 
    Esc鍵 退出當前模式 
    Esc鍵 Esc鍵 總是返回到命令模式

模式轉換:
    命令模式 --> 插入模式  
        i: insert, 在光標所在處輸入  
        I:在當前光標所在行的行首輸入  
        a: append, 在光標所在處後面輸入  
        A:在當前光標所在行的行尾輸入  
        o: 在當前光標所在行的下方打開一個新行  
        O:在當前光標所在行的上方打開一個新行   

    插入模式 --------> 命令模式     
        ESC 

    命令模式 --------> 擴展命令模式       
        : 

    擴展命令模式 --------> 命令模式       
        ESC,enter
關閉文件
    擴展模式:
        :q      退出
        :q! 強制退出,丟棄做出的修改
        :wq 保存退出
        :x      保存退出
        :w  filename 另存為
        :w!filename 強制另存會覆蓋filename文件
    命令模式:
        ZZ:保存退出
        ZQ:不保存退出

    擴展模式:
        按“:”進入Ex模式  
        創建一個命令提示符:   處於底部的屏幕左側 
        命令:  
            w 寫(存)磁盤文件  
            wq 寫入並退出 
            x 寫入並退出  
            q  退出  
            q! 不存盤退出,即使更改都將丟失   
            r filename 讀文件內容到當前文件中  
            w  filename 將當前文件內容寫入另一個文件  
            !command 執行命令  r!command 讀入命令的輸出 

    字符間跳轉:  
        h: 左  l: 右 j: 下 k: 上  
        #COMMAND:跳轉由#指定的個數的字符 
    單詞間跳轉:  
        w:下一個單詞的詞首  
        e:當前或下一單詞的詞尾  
        b:當前或前一個單詞的詞首  
        #COMMAND:由#指定一次跳轉的單詞數 
    當前頁跳轉:  
        H:頁首  
        M:頁中間行 
        L:頁底  

    行首行尾跳轉:  
        ^: 跳轉至行首的第一個非空白字符  
        0: 跳轉至行首  
        $: 跳轉至行尾 
    行間移動: 
        #G、擴展模式:# :跳轉至由#指定行 
        G:最後一行  
        1G, gg: 第一行 
    句間移動: 
        ):下一句 (:上一句 

    段落間移動:  
        }:下一段 {:上一段     

    Ctrl+f: 向文件尾部翻一屏 
    Ctrl+b: 向文件首部翻一屏 
    Ctrl+d: 向文件尾部翻半屏 
    Ctrl+u:向文件首部翻半屏     

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

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

    刪除命令:  
        d: 刪除命令,可結合光標跳轉字符,實現範圍刪除  
        d$: 刪除到行尾 
        d^:刪除到非空行首  
        d0:刪除到行首  
        dw:  
        de: 
        db: 
        #COMMAND
        dd: 刪除光標所在的行  
        #dd:多行刪除 
        D:從當前光標位置一直刪除到行尾,留空行,等同於d$  

    復制命令(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:刪除當前行並輸入新內容,相當於S  #cc:  
    C:刪除當前光標到行尾,並切換成插入模式    

    100iwang [ESC] 粘貼“wang”100次 
        <start position><command><end position> 
      Command:  
            y 復制、d 刪除、gU 變大寫、gu 變小寫 
        例如 
            0y$ 命令意味著: 
            0 → 先到行頭 
            y → 從這裏開始拷貝 
            $ → 拷貝到本行最後一個字符  
                ye 從當前位置拷貝到本單詞的最後一個字符   

    地址定界  
        :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/要查找的內容/替換為的內容/修飾符  
                要查找的內容:可使用模式  
                替換為的內容:不能使用模式,但可以使用\1, \2, ...等後向引用符號;還可 以使用“&”引用前面查找時查找到的整個內容  
        修飾符:  
            i: 忽略大小寫  
            g: 全局替換;默認情況下,每一行只替換第一次出現  
            gc:全局替換,每次替換前詢問 
        查找替換中的分隔符/可替換為其它字符,
            例如  s@/etc@/var@g  s#/boot#/#i 

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

 vim的寄存器
    有26個命名寄存器和1個無命名寄存器,常存放不同的剪貼版內容,可以不同會話間 共享 
    寄存器名稱a,b,…,z,格式:“寄存器   放在數字和命令之間  
        如:3"tyy 表示復制3行到t寄存器中   
            "tp  表示將t寄存器內容粘貼 
    未指定,將使用無命名寄存器 
    有10個數字寄存器,用0,1,…,9表示,0存放最近復制內容,1存放最近刪除內容。 
        當新的文本變更和刪除時,1轉存到2,2轉存
        到3,以此類推。數字寄存器不能在不 同會話間共享 

編輯二進制文件

    以二進制方式打開文件  
        vim –b binaryfile 
    擴展命令模式下,利用xxd命令轉換為可讀的十六進制  
        :%!xxd 
    編輯二進制文件 
    擴展命令模式下,利用xxd命令轉換回二進制  
        :%!xxd –r 
    保存退出 

可視化模式
    允許選擇的文本塊  
        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 ic  不忽略:set noic 
        (3) 自動縮進  
            啟用:set ai  禁用:set noai 
        (4) 智能縮進  
            啟用:smartindent 簡寫 set si  
            禁用:set nosi 
        (5) 高亮搜索  
            啟用:set hlsearch  
            禁用:set nohlsearch 
        (6) 語法高亮  
            啟用:syntax on  
            禁用:syntax off 
        (7) 顯示Tab和換行符 ^I 和$顯示  
            啟用:set list  禁用:set nolist 
        (8) 文件格式  
            啟用windows格式:set  fileformat=dos  
            啟用unix格式:set fileformat=unix  簡寫: set ff=dos|unix 
        (9) 設置文本寬度  
            啟用: set textwidth=65 (vim only)  
            禁用: set wrapmargin=15 
        (10) 設置光標所在行的標識線  
            啟用:set cursorline,簡寫cul  
            禁用:set no cursorline 
        (11) 復制保留格式  
            啟用: set paste  禁用: set nopaste  
Set 幫助 
    :help option-list
    :set or :set all 
vi/vim內置幫助      
    :help  
    :help topic
    Use :q to exit help 
vimtutor

%s@^#([[:space:]]+.)$@\1@gc
%s@^#([[:space:]]+.
)@\1@gc

vim的基本用法和參數