10分鐘vim快速入門

 1、vim的安裝和插件

    vim的在linux和mac機器上都是默認的文本編輯器,沒有特殊需求的話,默認設置就能夠直接使用,window上也能夠安裝,網上安裝教程過於繁瑣,咱們簡單點就好,window安裝以下:html

  • 咱們先安裝chocolatey,這個相似windows上package manger(如yum,rpm),經過命令安裝軟件包,簡單方便。
  • 用管理員權限打開你的cmd,運行:
    @powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

    記得要用管理器權限運行。linux

  • 用管理員權限運行PowerShell.exe ,運行以下指令:git

  • iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

    如果系統禁止運行腳本,如此解決:點我github

  • 管理員權限打開cmd,運行以下命令,安裝spf13-vim:
    choco install spf13-vim

    如此,vim安裝成功shell

2、模式

  • 普通(normal)模式

            通常用vim默認打開文本的默認模式,此模式下,只能對文本進行【上下左右,文頭文尾】遊標操做,以及【粘貼複製刪除】,不能夠編輯文本。vim

  • 編輯(insert)模式

        在普通模式下,按下【i, I, o, O, a, A, r, R】任何一個字母后(經常使用i(insert)便可,其餘慢慢掌握)就會進入編輯模式,此時能夠對文本進行編輯 ,和通常的文本編輯器操做沒有任何區別。通常畫面左下方會出現【INSERT 或REPLACE 】字樣。windows

  • 命令(command)模式

        在普通模式下,輸入【 : / ? 】任何一份字符,就切切換到命令模式下,命令模式下,能夠對文本作一些除編輯之外操做,好比存檔,讀取,正則搜索,替換,排重,調用perl或者系統指令,在你面前除了操做文本還能夠和系統交互,就是如此人性化。數組

  • 三種模式的轉換

        三種模式的切換,都是以普通模式爲中心來切換的,想要切換其中任務一種模式,都須要按下ESC,回到普通模式,而後再切換到指定模式。以下圖服務器

     

 

 

 

 

3、基礎功能

   安裝好以後,對模式有個大概的瞭解,你確定會想輸入一些內容到文本。基礎功能就是讓你如用記事本般使用vim。通常的編輯器都有以下功能,光標移動,插入,刪除,粘貼,複製,保存,打開,退出,新建文本。咱們經過一個例子來熟悉這些:編輯器

  1.光標移動

  • vi→ 打開vim編輯器(window下直接打開vim窗口,無需輸入這個指令),此時是普通模式
    i→ 編輯模式
    輸入"hello vim!"→ 此時在編輯文本內容
    按鍵ESC,返回普通模式
    :w test.txt→ 【:】進入命令模式,w表示存檔爲文件名test.txt的文本
    按鍵ESC,返回普通模式
    yy→複製當前行
    p→粘貼當前行
    :wq→ 命令模式下,保存並退出當前文件

 

 

 

 

  2.增刪改查

  • 經過以上幾個簡單的指令,你已經掌握了模式切換,輸入文本,粘貼複製,光標移動這些基礎功能,其餘的你須要知道這些命令:
  1. hjkl→上下左右的光標移動(普通模式)
    d→刪除當前光標處字符(普通模式)
    dd→刪除當前行(普通模式)
    :e file →打開一個文件(命令模式)
    :w → 存檔(命令模式)
    :saveas file  → 另存爲(命令模式)
    :q! →退出不保存(命令模式)
    :bn和:bp →切換上一個或者下一個文件(命令模式)
    u → 回撤上一步
    ctrl-r → 恢復上一步

     

  • 至此vim的簡單用法已經介紹完畢,如果只是想能在linux上打開個文本能夠看和編輯,以上功能已經足夠了,後面的介紹是讓你瞭解vim更強大的功能,提高你的效率,有這個需求了能夠往下看。

4、中級功能

 中級功能咱們主要介紹如何讓你的光標移動更有效率,以及如何使用正則匹配搜索和替換。

  1.快速插入 

  • i, I→i 爲動當前光標處插入,I爲目前列的第一個非空白字符出開始插入
    a, A→a 從目前光標喜好一個字符開始插入,A爲從目前光標最後一個字符插入
    o, O→o 從目前光標下一列出插入一行,O從目前光標處上一列插入一行
    r, R→r取代光標所在那一個字符,R一致渠道光標所在的字符,直到按下ESC

  2.行快速移動

  • gg → 光標移動到第一列
    
    G→光標移動到最後一列
    
    nG→n爲數字,移動到第n列   

  3.當前行快速移動光標

  • 0 → 到行頭
    ^ → 到本行的第一個非blank字符
    $ → 到行尾
    g_ → 到本行最後一個不是blank字符的位置。
    fa → 到下一個爲a的字符處,你也能夠fs到下一個爲s的字符。
    t, → 到逗號前的第一個字符。逗號能夠變成其它字符。
    3fb → 在當前行查找第三個出現的b。
    F 和 T → 和 f 和 t 同樣,只不過是相反方向。
    %  → 匹配括號移動,包括 (, {, [. 
    * 和 # → 匹配光標當前所在的單詞,移動光標到下一個(或上一個)匹配單詞(*是下一個,#是上一個)
    w → 到下一個單詞的開頭
    e → 到下一個單詞的結尾。

  4.複製選擇內容

  • v→ 可視化的選擇(普通模式下),咱們經過一個小例子說明
  • v→可視化的選擇
    移動光標
    y→複製
    p→粘貼剛纔選擇的字符

 

 

  5.搜索

  • /word  → 向當前光標之下找名稱爲word的的字符,向下搜索
    ?word  → 向當前光標之上找名稱爲word的的字符,向上搜索
    輸入上面指令以後按鍵enter鍵而後輸入一下鍵盤
    n → 表明重複前一個搜索動做(上次是/,n重複向下搜索,一直按n,會一直重複)
    N → 表明反向前一個搜索動做(上次是/,N表明向上搜索,一致按N,會一直重複向上)
    /uid\d\{10} → 正則匹配,匹配uid開頭後面10個數組的字符串
  • 關於正則匹配部分,再也不細講了,具體能夠點擊:此處

  6.替換

  • 替換是命令模式下
    :%s/name/fullname/g  → 表示在全部行中搜索替換name爲fullName
    表達式: :[range]s/from/to/[flags]
    
    flags 有以下四個選項:
    c confirm,每次替換前詢問;
    e error, 不顯示錯誤;
    g globle,不詢問,整行替換。若是不加g選項,則只替換每行的第一個匹配到的字符串;
    i ignore,忽略大小寫。
  • 關於正則匹配部分,再也不細講了,具體能夠點擊:此處

 

5、高級功能

擁有以上命令,你就能夠舒舒服服使用vim,不過vim更強的地方是,他還有一些如瑞士軍刀般的功能,簡單,高效,強大到你愛不釋手。

  1.區塊操做[Ctrl]+v

  •  前面咱們知道v是選擇視圖,[Ctrl]+v相似把視圖分解成列,一次能夠選擇一列。拿這個能夠作什麼,比    如咱們想在全部行以前插入一個字符,咱們能夠這麼作:
  • vim:test.txt → 打開test.txt
    yy → 複製一行
    p →粘貼一行
    10. →重複上一個指令10次,"."表明重複上一個指令
    ctrl-v → 區塊選擇
    G → 到最後一行
    I→行頭插入字符
    head →輸入字符head(這個是輸入字符,不是指令)
    ESC → 按鍵esc,你會看到全部的行頭輸入了head



     

 

 

  • 或者咱們想在全部的行尾插入一個字符,咱們能夠這麼作:
  • vim:test.txt → 打開test.txt
    ctrl-v → 區塊選擇
    G → 到最後一行
    $ → 光標移到行末尾
    A→行尾插入字符
    end →輸入字符end(這個是輸入字符,不是指令)
    ESC → 按鍵esc,你會看到全部的行頭輸入了end

 

  •         
     

 

 

 

  2.排重

  • 有時候文本里面有重複字符或者重複數字,咱們有排重的需求,咱們用以下指令
  • :g/^\(.*\)$\n\1$/d                      //去除重複行
    :g/\%(^\1$\n\)\@<=\(.*\)$/d     //功能同上,也是去除重複行
    :g/\%(^\1\>.*$\n\)\@<=\(\k\+\).*$/d  //功能同上,也是去除重複行

 

 

 

 

  3.調用shell

  • :! command → 執行系統命令
    :! ls → 查看當前目錄
    :! ls |sort → 查看當前目錄並排序

 

  4.宏錄製

  • 宏錄製,能夠理解爲錄製一批命令列表,而後再調用宏,會調用這剛錄製的命令集。有時候須要處理服務器日誌,須要篩選一些特殊信息(須要多個命令來處理),而每一行的長度不同,格式同樣,咱們就能夠錄製一個宏,而後批量執行來完成篩選。好比咱們想把剛纔的test.txt文件裏面全部行的hello移動到行首,咱們能夠這麼作:
  • vim test.txt
    q → 開始宏錄製
    a → 命名宏名稱爲a
    gg → 光標移至第一行
    /hello → 搜索hello
    enter → 光標移至h位置
    v → 開啓視圖選擇,並移動光標至o,選中hello
    d → 剪切單詞hello
    $ → 移動光標到行末尾
    p → 複製單詞hello
    j → 光標移動至下一行
    0 → 移動光標到行首
    q → 宏a錄製完畢
    10@a → 執行宏a 10次

 

 

 

 

  5.調用awk

  • :!awk -F"\!" 'print $2' test.txt  把文件test.txt 經過該"!"進行字符分割,並輸出第二列

 

 

 

 

  6.匹配刪除

#刪除含有「#」開頭的行
g/^#/d 
#刪除空行
g/^$/d 
#刪除不含指定字符串的行
g!/pattern/d

    vim還有一些更高級的功能,這裏就不在一一細說了,感興趣能夠移步網上找些教程,或者看幫助文檔。vim也能夠經過插件打形成IDE,好比這個C++的IDE ,,還有vim的速查卡 ,vim經常使用tips

相關文章
相關標籤/搜索