vim用法詳解

vim編輯器:文本編輯器:
文本:純文本,ASCII text;Unicode

文本編輯器種類:
    行編輯器:sed
    全屏編輯器:nano,vi  

vi:visual interface
vim:vi improved

vim:模式化的編輯器:
    編輯模式,命令模式(復制粘貼);鍵盤操作通常被解析為編輯命令
    輸入模式:
    末行模式:內置的命令行接口

打開文件:
    vim [options] [file ..]
        +#:打開文件后,直接讓光標處于第#行的行首
        +[num]  For the first file the cursor will be positioned on 
                line "num". If "num" is missing, the  cursor  will
                be positioned on the last line.

        +/PATTENR:打開文件后,直接讓光標處于第一個被PATTREN匹配到的行的行首
        +/{pat}  For  the  first  file  the  cursor  will  be  positioned  on        the first occurrence of {pat}.  See ":help search-pattern"              for the available search patterns.

        +:最后一行的行首
        vim -d file1 file2...比較多個文件
            -d Start in diff mode.  There should be two, three or four 
               file  name arguments.  Vim  will  open  all  the
               files and show differences between them.  Works like vimdi(1).
        vim -b file 二進制打開文件
            -b  Binary mode.  A few options will be set that makes it       possible to edit a binary or executable file.

        ex file 或 vim -e 直接接入ex模式
            -e Start Vim in Ex mode, just like the executable was called "ex".

如果該文件存在,文件被打開并顯示內容
如果該文件不存在,當編輯后第一次存盤時創建它

模式轉換:

編輯模式-->輸入模式
    i:insert:在光標所在處輸入
    a:append:在光標所在處后方輸入
    o:在光標所在處的下方打開一個新行
    I:在光標所在行的行首輸入
    A:在光標所在行的行尾輸入       
    O:在光標所在處的上方打開一個新行

輸入模式-->編輯模式:
    ESC
編輯模式-->末行模式
    :
末行模式-->編輯模式
    兩次ESC;ESC,ESC
鎖定和解鎖:Ctrl+s、Ctrl+q

關閉文件:
編輯模式下:
    ZZ:保存并退出
    ZQ:不保存退出
末行模式:
    q退出  
    q! 強制退出,不保存此前的編輯操作
    wq 保存退出
    x 保存并退出
    w寫(存)磁盤文件
    r filename 讀文件內容到當前文件中
    w /path/to/somefile
    !command執行shell命令
    r!command將shell命令的標準輸出,存入當前文件中

光標跳轉:

字符間跳轉:  
    h:左 
    j:下
    k:上 
    l:右
        #COMMAND:跳轉由#指定的個數的字符

當前頁跳轉:
    H:頁首
    M:頁中間行
    L:頁底

單詞間跳轉:
    w:下一個單詞的詞首
    b:當前或前一個單詞的詞首
    e:當前或后一個單詞的詞尾
    #COMMAND:跳轉由#指定的個數的單詞

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

行間跳轉:
    G:最后一行
    #G:跳轉至由#指定的行
    1G或者gg:跳轉至第一行

句間跳轉:(不常用)
   ( 上一句
    )下一句
    #( 上#句 
    #) 下#句

段間跳轉
    { 上一段
    } 下一段
    #{ 上#段
    #} 下#段


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

vim編輯命令:
    字符編輯
        x:刪除光標所在處的字符
        #x:刪除光標所在處起始的#個字符
        xp:交換光標所在處的字符與其后面的字符的位置
        ~:轉換大小寫
    替換命令(replace)
        r:替換光標所在處的字符
        rCHAR
        R:切換為REPLACE模式
    刪除命令
        d:刪除命令,可結合光標跳轉字符,實現范圍刪除
        d$:
        d^:
        d0:
        dw:
        de:
        db:
        #COMMAND
        dd:刪除光標所在處的行
        #dd:刪除光標所在處的行起始的共#行
        D:從當前光標位置一直刪除到行尾,留空行等同于d$
    粘貼命令(paste)
        P(小寫):緩沖區中的內容如果為整行,則粘貼在當前光標所在行的下方
                否則,粘貼至當前光標所在處的后面
        p(大寫):緩沖區中的內容如果為整行,則粘貼在當前光標所在行的上方,
                否則,粘貼至當前光標所在處的前面;
    復制命令:(yank)
        y:復制,工作行為相似與d命令
        yw
        ye
        yb
        y$
        y^
        y0
        #COMMAND
        yy:復制一整行
        #yy:復制#行
    改變命令(change,c):
    編輯模式-->輸入模式,實現刪除操作;
        c$
        c^
        c0
        cb
        ce
        cw
        #COMMAND
        cc:刪除光標所在處的行,并轉換為輸出模式
        #cc:
        C:刪除當前光標到行尾,并切換成插入模式

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

vim可視化模式:
    v:按字符選定
    V:按行選定
    Ctrl+v:面向塊
結合編輯命令使用:d,c,y
可視化鍵可用于與移動鍵結合使用:
    w,),},箭頭等
突出顯示的文件可以被刪除,復制,變更,過濾,搜索/替換等

撤銷(undo)操作:
    u:撤銷此前的操作
    #u:撤銷此前的#操作
    U:撤銷光標落在這行后所有此行的更改

撤銷此前的撤銷操作 recover
    Ctrl+r

重復執行此前的命令
    .:
    #.:重復前一個操作#此


vim自帶的練習教程:vimtutor



vim末行模式
內建的命令行接口

1、地址定界:start_pos,end_pos
    $:最后一行
    .:當前行           
    %:全文 
    #:表示特定的第#行,例如5即第5行
    #,#:指定行范圍,左側為起始行,右側為結束行
        1,$
        .,$-1
    #,+#:指定行范文,左側為起始行絕對編號,右側為相對左側行號的偏移量
    /pattern/:從光標所在處起始向文件尾部第一次被模式所匹配到的行
        /first/,$
        /pat1/,/pat2/

vim刪除空白行
:g/^$/d

可同編輯命令一同使用,實現編輯操作:
    d:刪除
    y:復制
    c:修改、改變
    w /path/to/somefile:將范圍內的文本保存至指定的文件中;
    r /path/from/somefile:將指定的文件中的內容讀取到指定位置

2、查找
    /PATTERN:從當前光標所在處向文件尾部查找能夠被當前模式匹配到的所有字符串
    ?PATTERN:從當前光標所在處向文件首部查找能夠被當前模式匹配到的所有字符串
        n:下一個,與命令方向相同
        N:上一個,與命令方向相反
3、查找并替換
    s:末行模式的命令;使用格式:
    s/要查找的內容/替換為的內容/修飾符
        要查找的內容:可使用正則表達式
        替換為的內容:不能使用正則表達式,但可以引用;
        如果"要查找的內容" 部分在模式中使用分組符號:
        在"替換為的內容中"使用后向引用
    直接引用查找模式匹配到的全部文本,要使用&符號
修飾符:
    i:忽略大小寫
    g:全局替換,一行中如果匹配到多次,則均替換
    gc:全局替換,每次替換前詢問

可把分隔符替換為其他非常用字符
    *
    @

實例:
    %s@\<t\([[:alpht:]]\+\)\>@T\1@g

    %s@\<\(f[[:alpha:]]\+\)\>@\1er@g  等同于  %s@\<f[[:alpha:]]\+\>@&er@g        

    %s@^#@@g





vim的多文件功能:
vim FILE1 FILE2...

在文件間切換:
    next  下一個
    prev(prevous)  上一個
    first  第一個
    last  最后一個
退出所有文件:
    wqall 保存所有文件并退出
    wall
    qall
多窗口:
    vim -o|O file1.txt file2.txt  file3.txt
        -o:水平分割窗口
        -O:垂直分割窗口

在窗口直接切換:Ctrl+w,ARROW

注意:單個文件也可以水平分割為多個窗口進行查看:
    Ctrl+w,s:split  水平分割窗口
    Ctrl+w,v:vertical 垂直分割窗口
    Ctrl+w,q:取消相鄰窗口
    Ctrl+w,o:取消全部窗口
    :wqall:退出


定制vim的工作特性:
注意:在末行模式下的設定,僅對當前vim進程有效
永久有效:
    全局:/etc/vimrc
    用戶個人:~/.vimrc
1、行號
    顯示:set number 簡寫為 set nu
    取消:set  nonumber 簡寫為 set nonu
2、括號匹配高亮
    匹配:set showmatch   set sm
    取消:set  noshowmatch   set nosm
3、自動縮進
    啟用:set al     auto indent
    禁用:set noal
4、高亮搜索:
    啟用:set hlsearch   highlight search
    禁用:set nohlsearch
5、語法高亮:
    啟用:syntax on   syntax 語法
    禁用:syntax off
6、忽略字符大小寫
    啟用:set ic   ignore character
    禁用:set noic

7、文件格式
    set fileformat=unix
    set fileformat=dos
8、設置文本寬度
    set textwidth=65 (vimonly)
    set wrapmargin=15
獲取幫助
    help
    help Subject

    help option-list
    set or:set all

vi/vim內置幫助
    help
    help topic
    use :q to exit help

# vimtutor 入門教程摘要

vim用法詳解

vim用法詳解

vim用法詳解

vim用法詳解

vim用法詳解

vim用法詳解

vim用法詳解

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

    用a,b,c...z表示,用"寄存器表示,放在數字和命令之間
    如 3"ayy 表示復制3行到a寄存器中
        "ap  表示將a寄存器內容粘貼

    未指定,將使用無命名寄存器

    有10個數字寄存器,用0,1,…,9表示,
    0存放最近復制內容,
    1存放最近刪除內容。
    當新的文本變更和刪除時,1轉存到2,2轉存到3,以此類推。數字寄存器不能在不同會話間共享。 

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


拓展:

VIM中分行,使用替換命令,用正則匹配要分行的位置,然后替換換行符,但是在VIM中不能使用\n在替換的文本中,要用\r,如:
    :%s/--/\r/g
    表示在所有“--”處進行分行。

VIM中刪除空白行,:
    :g/^$/d

    :g/^\s*$/d
    \s*代表空白字符

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

(0)
sixijiesixijie
上一篇 2016-08-15
下一篇 2016-08-15

相關推薦

  • 描述LVS的工作原理

    一、LVS結構   LVS由前端的負載均衡器(Load Balancer,LB)和后端的真實服務器(Real Server,RS)群組成。RS間可通過局域網或廣域網連接。LVS的這種結構對用戶是透明的,用戶只能看見一臺作為LB的虛擬服務器(Virtual Server),而看不到提供服務的RS群。當用戶的請求發往虛擬服務器,LB根據設定的包轉發策略和負載均衡…

    Linux干貨 2016-08-29
  • Trap命令簡介

     Trap命令簡介     一、基本概念  trap是一個shell內建命令,它用來在腳本中指定信號如何處理。比如,按Ctrl+C會使腳本終止執行,實際上系統發送了SIGINT信號給腳本進程,SIGINT信號的默認處理方式就是退出程序。如果要在Ctrl +C不退出程序,那么就得使用trap命令來指定一下SIGINT的處…

    Linux干貨 2015-05-11
  • 包管理工具rpm和yum的用法

    包管理工具rpm和yum的用法 一、rpm的用法 rpm原本是Rde Hat Linux發行版專門用來管理Linux各項套件的程序,由于它遵循GPL規則且功能強大方便,因而廣受歡迎。逐漸收到其他發行版的采用,RPM套件管理方式的出現,讓Linux易于安裝、升級,間接提升了Linux的適用性。 rpm用法:rpm [OPTION…] 1、rpm安裝…

    Linux干貨 2016-08-24
  • select基本用法和軟件包管理

    一、select語句     select語句在腳本中用于創建菜單,按數字順序排列的菜單項顯示在標準輸出上,并用PS3提示符,等待用戶輸入。用戶輸入菜單中的某個數字,執行相應的命令,并被保存在內置變量REPLY中。 用法:     select NAME [in WORDS &#…

    Linux干貨 2016-08-21
  • 2018第六屆中國網絡安全大會即將于6月強勢登陸!

    2018年6月13日,由賽可達實驗室、國家計算機病毒應急處理中心、國家網絡與信息系統安全產品質量監督檢驗中心、首都創新大聯盟共同舉辦的第六屆中國網絡安全大會(NSC 2018)將在北京國家會議中心盛大召開。

    2018-03-15
  • Linux http服務

                               Linux http服務   網絡服務通信基礎:   1、端口號就是進程標識,每個用戶最多只能打開1024個進程。   2、MAC地址僅…

    系統運維 2016-11-18
欧美性久久久久