vim簡單實用的技巧總結

vi 和 vim無需過多的區分,vim可認為是vi的增強版。

       這篇關于vim的手冊,我個人覺得實在無法把它寫成文章,只能以手冊的方式列舉出來,
因為,vim是一個動手使用的工具,只能在使用中你才能慢慢發現它的操作多么符合邏輯,
我從下面這些簡略的描述中,盡量將它的操作步驟寫出來,但更重要的是你必須在使用過程中去嘗試,
才會發現更多有趣的功能。

vim的配置文件:

        /etc/vimrc :這個配置文件到設置對所有用戶生效。
        ~/.vimrc   :vim在家目錄中有一個配置文件,將自定義到map ,  ab , set設置都可以直接加入其中,每次使用vim時都生效此文件可自己手動創建。

 注:修改默認編輯器為:vim
  EDITOR=vim
  export  EDITOR

vim使用必須知道它主要的三種模式:【注意:下面所有操作使用的字母均區分大小寫】

     0. 所有模式的退出都是按 ESC 鍵
    vim下刪除實際為剪切

     1. 命令模式 :可輸入內部指令也可進行復制刪除移動等操作,不過這種方式通常適合于查找替換,直接導入命令結果,打開多文件同時編輯等。
            切入方法:在末行模式下,輸入“冒號”,即可進入
     
     2. 輸入模式:這是正常的編輯文件內容時的狀態。
            切入方法比較多:

      1. i :從當前光標位置開始進入編輯狀態。    I :先回到行首在進入編輯狀態。
      2. a :將光標向前移一個字符后進入編輯狀態。 A :先到行尾,在進入編輯狀態。
      3. s :先刪除當前光標處字符,再進入編輯狀態。S :先刪除當前行,在進入編輯狀態。
      4. cc :先刪除當前行,在進入編輯狀態。     C :從當前光標處刪除到行尾,在進入編輯狀態。
      5. o :先向下插入新空白行,在進入編輯狀態。 O :先向上插入新空白行,在進入編輯狀態。

 

     3. 末行模式:剛用vim打開文件時就處于末行模式。
                 在末行模式下可以直接輸入內部命令來移動光標,刪除,恢復,復制等操作。

     查找
        切入方法:直接按 /
     替換編輯模式:此模式僅用來替換使用
        切入方法:按 R 
                按 r :不會進入替換編輯模式,它是直接替換單個字符。
     多行選取模式:【可進行復制,刪除】
        切入方法:按 大V, 然后按上下鍵選擇多行進行選??;小v :是從光標當前位置開始多行選取。
                 接著,按 y | d 可進行復制或刪除;
                 最后,按 p 即可粘貼。
     塊選取模式:【可進行復制,刪除】
        切入方法:按 Ctrl + 小v, 然后按上下左右鍵來選擇操作的塊。
                 接著,按 y | d 可進行復制或刪除;
                 最后,按 p 即可粘貼。
     注:塊復制的一個實用的小技巧:
      多行快速注釋:
       > 先移到行首,按ctrl + v,
       > 將需要注釋掉的行的行首都選中
       > 按 大I,進入輸入模式
       > 接著輸入 注釋符號 如 #,// ....
       > 最后,同時按兩次 ESC鍵,即可。

編輯操作:

末行模式:
  gg :快速到全文開頭       G :快速到全文末尾
  Y | yy :復制一行。      number + Y | yy :同時復制number行。
  p :粘貼到當前行下面      P :粘貼到上當光標的上一行。
  dd :刪除一行。          number + dd : 同時刪除number行。
  D  :從光標當前位置刪除到行尾 
  x  : 刪除光標右邊的字符   X : 刪除光標左邊的字母
  u  :撤銷
  ctrl + r :重做
  
命令模式:
  :20,100 {[copy |move 200] delete }  -->將20~100的內容復制到201行處。
             copy可簡寫為co
             move可簡寫為mo
             delete可簡寫為del 
  :r /etc/shadow    -->將/etc/shadow讀入到當前光標所在處
  : ! ls /usr/local  -->不退出vim,來執行命令。
  :r ! grep mysql /etc/passwd    -->將命令執行結果插入到當前光標處
    
保存退出:
  :wq | ZZ  -->表示保存退出
  ctrl + z :將當前編輯文件調入后臺。使用fg調回前臺。
  ctrl + g :顯示光標在當前文件的位置信息
  :q!       -->不保存退出
  :w  /tmp/abc.txt   -->另存為/tmp/abc.txt
  :10,$w  /tmp/tail.txt  -->將文件從第10行到文件尾,另存為/tmp/tail.txt
  :X   -->對文件加密存儲
  :e!  -->重新讀入當前文件

 開啟vim的功能:
  :set nu  開啟行號顯示       
  :set nonu  關閉行號顯示
  :set ts=4 設置tab鍵為4個字符的空擋
  :set smartindent  開啟vi的自動縮進功能 
  :set nosmartindent  關閉自動縮進功能 
  :set sw=4 設置自動縮進的空擋為4個字符
  :set list  查看隱藏字符
查找替換:
  操作方法:
 1. 進入命令模式
 2. 格式:[range]s/<pattern>/<string>/[args]
  例: 要替換全文中所有abc為123,且忽略大小寫.
          :%s/abc/123/gi
      僅替換21~50行之間所有的abc為Ab123  
          :21,50s/abc/Ab123/Ig
      從當前行向下10都注釋掉
          :.,+10s/^/#/g
  參數說明:
   range:
     空:表示僅對當前行進行查找替換
     % : 對全文進行查找替換
     Row : 僅對指定行號的行進行查找替換
     Row1,Row2 : 對一個行號范圍進行查找替換
     args : 它的取值可以是下列之一 或  組合。
       空  :僅替換該行第一個匹配字符串
       g   : 替換該行所有匹配的字符串
       i   :忽略大小寫
       I   : 不忽略大小寫
       c   : 每個替換都需要確認
擴展:
  dG : 從當前位置刪到全文尾    yG : 從當前位置復制到全文尾
  dgg : 從當前位置刪到全文首   ygg :從當前位置復制到全文首
  d^ : 從光標當前位置刪到行首   y^ : 從光標當前位置復制到行首
  d$ : 從光標當前位置刪到行尾  y$ : 從光標當前位置復制到行尾
  dw :刪除光標右邊位置的單詞  yw :復制光標右邊位置的單詞
  db :刪除光標左邊位置的單詞  yb :復制光標左邊位置的單詞
  dNw :刪除光標右邊N個的單詞  yNw :復制光標右邊N個的單詞
  dNb :刪除光標左邊N個的單詞  yNb :復制光標左邊N個的單詞
  
  刪除空行:
   :%s/^\n//g
   :g/^$/d      -->刪除空行
   :g/^\s*$/d   -->刪除任意空行
  
  標記點復制刪除移動:
   操作方法:
    0. 進入末行模式
    1. 先將光標移動操作行的任意位置,接著按 ma
    2. 將光標移動到區間的結束行的任意位置,按 mb
    3. 根據操作:
     》若為 刪除,則 進入命令模式,:'a,'b del  -->注:是單引號+a,單引號+b
     》若為 復制或移動,則在全文中任意位置,按 mc
      接著進入命令模式, :'a,'b [copy | move] 'c 
      
  vim啟動時直接定位到指定行:
       vim +  /var/log/message     -->啟動時直接定位到文件尾。
       vim +行號  /var/log/message  -->啟動時直接定位到指定行。
   
  多文件并行編輯:
   :sp a.txt  -->將當前編輯窗口平均分成上下兩塊,在上半塊顯示a.txt,
        使用ctrl + w + w,在多個窗口間切換。
   :vsp a.txt -->將當前編輯窗口平均分成左右兩塊,在左半塊顯示a.txt,
        使用ctrl + w + w,在多個窗口間切換。
   或
   vim -O  1.txt  2.txt  3.txt  -->大O參數,可同時編輯三個文件,
        使用ctrl + w + w,在多個窗口間切換。
   vimdiff  1.txt  2.txt    -->在vim編輯器中顯示出兩個文件的不同之處。
  
  定義快捷鍵:
   操作方法:
    1. 進入命令模式
    2. :map  ^P  I#<ESC>:  -->注意:^P 這個尖角號在Vi中是通過:
                            按ctrl+v 再按ctrl+p才出來^P的 或 按ctrl + v + p也可。
     表定義了一個快捷鍵ctrl+P,只有按ctrl+P則執行將光標移到行首,并插入#號,再退回到命令模式。
     【i:插入,#:要插入的字符,<ESC>:退出標志】
      例:
       定義了一個快捷鍵ctrl+D,執行操作為:將光標移到行首,并刪除第一個字符,如:#
         :map  ^D  ^x 
       定義一個快捷鍵ctrl+E,在光標所在處插入我的郵箱。
         :map  ^E  
   取消快捷鍵:unmap  ^P 
  
  將a替換為b :
   操作方法:
    1. 進入命令模式
    2. :ab  mymail  
    3. 在正文中任何位置,輸入mymail,按空格 或 回車即可快速替換為
 
   取消方法:unab  mymail

 

行間移到操作:
                    k :向上
                    5k :向上移到5行
                    命令模式下,再按 +number 回車可以當前行為基準向上移到number行。
 h : 向左                                            l :向右
 5h:左移5個字符                            5l:向右移5個字符
 5b: 左移5個單詞                              5w:右移5個單詞
                   number + 空格: 向右移動指定字符數。
                   j :向下
                  5j:向下移到5行
                  number + 回車 :向下翻指定行
                  命令模式下,再按 -number 回車可以當前行為基準向下移到number行。

快速移到行首和行尾
  操作方法:
       編輯:  直接按 大I,可快速移到行首并進入編輯狀態,按 大A,可快速到行尾并進入編輯狀態。
       非編輯:直接按 ^ 可快速跳到行首, $ 可快速跳到行尾。
        
快速定位到當前行中指定的字母處
        操作方法:
              正向跳轉:則在光標所在行的任意位置, 按 f ,再按要跳到的字母即可快速跳轉到。
              反向跳轉:則在光標所在行的任意位置, 按 F ,再按要跳到的字母即可快速跳轉到。
 
段落間跳轉:
        操作方法:
              在全文的任意位置, 按 { 可跳轉到上文中第一個空白行隔斷處; 按 } 可跳到下文中第一個空白行隔斷處。
              此功能非常適合快速復制 | 刪除 整個函數
                    操作方法:先移到函數頭或尾的空白行處, 以尾為例,先按 { 到函數頭部第一個空白行,
                              再按 y | d , 最后按 } 再跳到函數尾,即可復制或刪除一整個函數。
 
自動匹配最近的一對圓括號 或 花括號,非常適合復制整個函數體
  操作方法:
   復制或刪除函數體:將光標移到到函數體的 花括號上,按:y%  或  d%
   復制或刪除函數頭:將光標移到到函數名首字母處,按 y%  或  d%
 
定界符內的字符快速復制,剪切,刪除:
        定界符:如 "/a/b/c", '/etc/a', function(a,b), <html  …/>
        類似上面這種定界符內的字符均可操作:
         方法:
            1. 先將 光標移到到定界符內部任意位置,
            2. y : 復制,  d: 剪切,刪除, c: 刪除或剪切 并 直接進入編輯模式
                i :即inner,表示要操作對象內部的文本
                a : 即all,表示要操作整個對象的文本
            3. 直接按 y + i 或 a +定界符的兩端任何一個,即可剪切或復制。
                如:
                    <html  …/> ,
                        若僅剪切<>內部的字符,方法是直接將光標移到<>內部,按 di> 或 di< 即可。

翻屏操作:
    ctrl + f :向下翻屏幕   ctrl + d: 向下翻半屏幕
    ctrl + b :向上翻屏幕   ctrl + u: 向上翻半屏幕 
  
   快速將光標所在行移到到行屏幕頂或尾或中間:
        操作方法:

            將光標移到全文中任意位置,
             按   zt ,可將當前光標所在處置于屏幕頂;
                   z+回車 ,可將當前光標所在處置于屏幕頂;
             按  zb ,可快速光標所在處置于屏幕低;
                   z+減號 ,可將當前光標所在處置于屏幕低;
             按  zz ,可將當前光標所在處置于屏幕中間位置。
        注:此方法可配合 H, M, L 來方便快速翻頁:
                H :快速移到到屏幕頂。
                M :快速移到到屏幕中間
                L  :快速移到到品名低。
 
 
  切換光標處字母的大小寫:
        操作方法:

            將光標移到到字母上,按 ~
  增減光標處的數字:
        操作方法:
            增加數字:將光標移到到數字上,按 ctrl + a
            減小數字:將光標移到到數字上,按 ctrl + x
   重復前一次操作:
        操作方法:

            剛剛操作過的動作,若想再次做,則可直接,按 點號 "."

 

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

(0)
Wn1mWn1m
上一篇 2015-09-14
下一篇 2015-09-14

相關推薦

  • shell編程之數組及環境變量

    數組 變量:存儲單個元素的內存空間 數組:存儲多個元素的連續的內存空間,相當于多個變量的 集合 索引:編號從0 聲明數組: declare -a ARRAY_NAME declare -A ARRAY_NAME:關聯數組 1.declare  -a menu  menu[0]=beef  menu[1]=chicken menu…

    Linux干貨 2016-08-29
  • 快速搭建SVN服務器

    一、背景介紹 svn服務器是一款上傳代碼的工具(貌似這么說不怎么嚴謹,但是在日常工作中基本上是這么用的),今天一個小伙伴折騰了一天也沒有搭建好這個svn服務器。各種問題,其實搭建SVN服務器最重要的就是三個配置文件(svnserver.conf、 passwd 、authz)。出了問題的話十有八九是這三個配置文件的問題。最后,我自己搭建了一個,測試成功。于是…

    Linux干貨 2016-12-11
  • 編寫腳本

        1、  編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPV4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。                      …

    2017-04-13
  • N29第一周作業:初識Linux系統

    1、描述計算機的組成及其功能。
    2、按系列羅列Linux的發行版,并描述不同發行版之間的聯系與區別。
    3、描述Linux的哲學思想,并按照自己的理解對其進行解釋性描述。
    4、說明Linux系統上命令的使用格式;詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相應的示例來闡述。
    5、如何在Linux系統上獲取命令的幫助信息,請詳細列出,并描述man文檔的章節是如何劃分的。
    6、請羅列Linux發行版的基礎目錄名稱命名法則及功用規定

    2018-03-04
  • Ansible應用介紹

    Ansible 簡介 ansible是個什么東西呢?官方的title是“Ansible is Simple IT Automation”——簡單的自動化IT工具。這個工具的目標有這么幾項:自動化部署APP;自動化管理配置項;自動化的持續交互;自動化的(AWS)云服務管理。所有的這幾個目標從本質上來說都是在一個臺或者幾臺服務器上,執行一系列的命令而已。通俗的說…

    Linux干貨 2015-07-03
  • Cobbler簡單部署小結

     Cobbler 和 koan 的安裝源:        ubuntu(12.04)的源:             注: Ubuntu的可用源可從這里查詢:http://wiki.ubuntu.org.cn/Template:12.04source …

    Linux干貨 2016-03-20
欧美性久久久久