vim編輯器使用詳解

Vim_logo.gif?t=1399607809000

  • Vim簡介vim

    Vim是一個相似於Vi的著名的功能強大、高度可定製的文本編輯器,在Vi的基礎上改進和增長了不少特性。VIM是純粹的自由軟件。bash

    Vim廣泛被推崇爲類Vi編輯器中最好的一個,事實上真正的勁敵來自Emacs的不一樣變體。1999 年Emacs被選爲Linuxworld文本編輯分類的優勝者,Vim屈居第二。但在2000年2月Vim贏得了Slashdot Beanie的最佳開放源代碼文本編輯器大獎,又將Emacs推至二線, 總的來看, Vim和Emacs一樣都是很是優秀的文本編輯器。編輯器

   全屏幕的編輯器:VIM,又稱,visual interface,是一款文本編輯器,vi, vi iMprovedide


  • Vim模式:spa

    編輯模式:命令模式開放源代碼

    輸入模式:orm

    末行模式:blog


  • 使用Vim:教程

    vim [options] [file ..]文檔

    # vim

    # vim /PATH/TO/SOMEFILE    

      +#:#爲行號;

      +:快速定位至最後一行

      +/PATTERN:快速匹配到文檔


  • 模式間轉換:

    編輯模式 --> 輸入模式:

      i: 當前光標輸入,

      a:當前光標的下一位輸入,

      o:新插入一行輸入,

      I: 行首輸入,

      A:行尾輸入,

      O:上方新建行輸入,

    輸入模式 --> 編輯模式

      ESC

    編輯模式 --> 末行模式

      :

    末行模式 --> 編輯模式

      ESC


  • 關閉vim:

    末行模式:

      :q  退出;

      :q!  強制退出;

      :wq  保存並退出;

      :x  保存並退出;

     

    編輯模式:

      ZZ:保存退出;


  • 光標跳轉:

注:如下操做需在編輯模式完成;

    字符間跳轉:

      k:

 h:        l: (k,上)(j,下)(h,左)(l,右)

      j:

      #COMMAND: #號表明數字,5k(表示5個字符)


    單詞間跳轉:

      w:下一個單詞的詞首;

      e:當前或後一個單詞的詞尾;

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

      #COMMAND: 


    行內跳轉:

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

      0:跳轉至絕對行首;

      $:跳轉至絕對行尾;


    行間移動:

      #G: 5G (跳轉到第五行)

      1G,gg

      G:文本的文尾(最後一行)

      gg:文本的文首(第一行)


    句間移動:

      )

      (


    段落間移動:

      }

      {


  • 編輯命令和操做:

注:如下操做需在編輯模式完成;

    字符編輯:

      x: 刪除光標所在處的字符

      #x: 5x (刪除光標所在處後5個字符)

      xp: 刪除並複製

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


    刪除命令:

      d: 刪除命令

      d^:刪除光標至行首

      d$:刪除光標至行尾

      d0:刪除光標至行首的全部字符

      dw, de, db

      dd:刪除當前光標的所在行(整行)

      #COMMAND:#表明數字

注:刪除的內容會被vim編輯器保存至緩衝區當中;


    粘貼命令:p (paste, put)

      若是此複製或刪除的內容不是一個完整行

      p:粘貼至當前光標所在處後面;

      P:粘貼至當前光標所在處前面;

      若是複製的內容是完整行(可不止一行)

      p: 粘貼至當前光標所在行下方;

      P:粘貼至當前光標所在行上方;


    複製命令:y, yank

      y:複製命令

      y$, y^, y0

      ye, yw, yb

      yy:複製行

      #COMMAND:5yy(複製5行)


    修改命令:c, change

      c$, c^, c0

      cb, ce, cw 

      cc: 刪除當前行,並移至行首,開啓輸入模式

      #COMMAND:5cc(刪除光標如下5行,並開啓輸入模式)


    撤銷命令:

      u: undo;撤消此前編輯操做;

      #u:#表明撤銷次數

      Ctrl+r:恢復此前的撤消操做(撤銷撤銷,還原撤銷)

      .: 重複前一個編輯操做


  • 翻屏操做快捷鍵:

      Ctrl+f: 向後一屏;

      Ctrl+b:向前一屏;


      Ctrl+d: 向後半屏;

      Ctrl+u: 向前半屏;


  • 多文件模式:


    打開文件:vim [OPTIN]...[FILE]...

      :next  下一個文件

      :first  第一個文件

      :prev  上一個文件

      :last  前一個文件

      :wqall  所有保存並退出

      :q!all  所有強制退出


  • 多文件窗口分割:

    打開文件:vim -o|-O FILE1 FILE2 ...

      Ctrl+w:切換窗口,多文件編輯窗口切換


  • 單文件窗口分割:

    Ctrl+w, s: split, 水平分割

    Ctrl+w, v: vertical, 垂直分割

      

VIM內建教程:

[root@localhost ~]# vimtutor



VIM末行模式操做和命令:

注:以下如何操做均在末行模式完成

一、地址,定界

    :start_pos,end_pos

    #:第#行;

    #,#

    #,+#

    .: 當前行

    $: 最後一行

    %: 全文,至關於1,$


    /pat1/:第一次被此模式所匹配到的行;

    #,/pat1/

    /pat1/,/pat2/


    後可跟編輯命令:

    d, y

    w, r


二、查找

    /PATTERN:向尾部進行

    ?PATTERN:向首部進行

    n: 與命令同方向

    N:與命令反方向 


三、查找替換

    s: 在末行模式下,在地址定界的範圍內完成查找替換操做;

      s/要查找的內容/替換爲的內容/修飾符

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

      替換爲的內容:不能使用模式,但可使用後向引用符號,以引用前面模式中的分組括號所匹配到的內容;

      \1, \2, ...

      &:引用「要找的內容」匹配到的整個內容;

    修飾符:

      i: 忽略大小寫

      g: 全局替換

      /:用於分隔符,因此,要查找的內容或替換爲的內容中出現此符號,要使用\對其轉義,使用格式:\/分隔符可替換爲其它字符:例如@,#等;

wKioL1XbOFHQHGiNAAFutikKSwI798.jpg


四、在vi中執行命令和導入文件

    在末行模式下:  

      導入文件:  r FILENAME

     執行命令:  !COMMAND

      導入執行命令的結果:   r!COMMAND



  • 定製vim的某些工做特性

    一、行號

顯示:set nu

禁用:set nonu

    二、括號匹配

顯示:set sm

禁用:set nosm

    三、自動縮進:

set ai

set noai

    四、高亮搜索

set hlsearch

set nohlsearch

     五、語法着色

syntax on

syntax off

     六、忽略字符大小寫

set ic

set noic

     七、:help 獲取幫助


  • 特性設定的永久生效方式:

    全局配置文件:/etc/vimrc

    用戶我的的配置文件:~/.vimrc


練習

一、複製/etc/grub.cfg配置文件至/tmp目錄,用查找替換命令刪除/tmp/grub.cfg文件中的行首的空白字符;

   答:%s/^[[:space:]]//g

二、複製/etc/rc.d/init.d/functions文件至/tmp目錄,用查找替換命令爲/tmp/functions的每行開頭爲空白字符的行的行首加一個#; 原有空白字符保留;

   答:%s/^[[:space:]][[:space:]]/#/g

三、替換/tmp/functions文件中的/etc/sysconfig/init爲/var/log;

   答:%s/\/etc\/sysconfig\/init/\/var\/log/g

四、刪除/tmp/functions文件中因此#開頭,且#後面至少跟了一個空白字符的行的行首#;

   答::%s/^#[[:space:]]//g

相關文章
相關標籤/搜索