Linux中vi與vim的區別以及常用命令


一、vi與vim的區別

1、多級撤銷

  在vi編輯器中,按u只能撤消上次命令,而在vim里可以無限制的撤消。

2、易用性

  vi編輯器只能運行於unix中,而vim不僅可以運行於unix,還可以運行於windows、mac等多操作平台。

3、語法加亮

  vim可以用不同的顏色來加亮你的代碼。

  如下兩張圖的對比:

  ①vi main.c

    ②vim main.c

4、可視化操作

  vim不僅可以在終端運行,也可以運行於windows、 mac os。

5、對vi的完全兼容

  某些情況下,你可以把vim當成vi來使用。


小結:vi和vim都是Linux中的編輯器,不同的是vim比較高級,可以視為vi的升級版本。vi使用於文本編輯,但是vim更適用於coding。 

二、VI 模式

1、命令行模式 (command mode/一般模式)

  任何時候,不管用戶處於何種模式,只要按一下“ESC”鍵,即可使Vi進入命令行模式;我們在shell環境(提示符為$)下輸入啟動vi命令,進入編輯器時,也是處於該模式下。

  在該模式下,用戶可以輸入各種合法的vi命令,用於管理自己的文檔。此時從鍵盤上輸入的任何字符都被當做編輯命令來解釋,若輸入的字符是合法的vi命令,則vi在接受用戶命令之后完成相應的動作。但需注意的是,所輸入的命令並不在屏幕上顯示出來。若輸入的字符不是vi的合法命令,vi會響鈴報警。

2、文本輸入模式 (input mode/編輯模式)

   在命令模式下輸入插入命令i(insert)、附加命令a (append)、打開命令o(open)、修改命令c(change)、取代命令或替換命令都可以進入文本輸入模式。在該模式下,用戶輸入的任何字符都被vi當做文件內容保存起來,並將其顯示在屏幕上。在文本輸入過程中,若想回到命令行模式下,按”ESC”鍵即可。

3、末行模式 (last line mode/指令列命令模式)

   末行模式也稱轉義模式。 

  vi和Ex編輯器的功能是相同的,二者主要區別是用戶界面。在vi中,命令通常是單個鍵,例如i、a、o等;而在Ex中,命令是以按回車鍵結束的正文行。vi有一個專門的“轉義”命令,可訪問很多面向行的Ex命令。 

  在命令模式下,用戶按冒號“:”鍵即可進入末行模式,此時vi會在顯示窗口的最后一行(通常也是屏幕的最后一行)顯示一個“:”作為末行模式的提示符,等待用戶輸入命令。多數文件管理命令都是在此模式下執行的(如把編輯緩沖區的內容寫到文件中等)。末行命令執行完后,vi自動回到命令模式。

三、VIM 模式

1、正常模式 (Normal-mode)

  啟動vim后默認處於正常模式(即命令行模式)。不論位於什么模式,按下<Esc>鍵(有時需要按兩下)都會進入正常模式。

2、插入模式 (Insert-mode)

  在正常模式中按下i, a, o, I,A,O鍵,會進入插入模式。現在只用記住按i鍵會進行插入模式。在插入模式中,擊鍵時會寫入相應的字符。

3、命令模式 (Command-mode)

  在正常模式中,按下:(英文冒號)鍵,會進入命令模式。

  在命令模式中可以執行一些輸入並執行一些vim或插件提供的指令,就像在shell里一樣。這些指令包括設置環境、文件操作、調用某個功能等等。

4、可視模式 (Visual-mode)

  在正常模式中按下v,V,<ctrl>+v,可以進入可視模式。

  可視模式中的操作有點像拿鼠標進行操作,選擇文本的時候有一種鼠標選擇的即視感,有時候會很方便。

四、VI與VIM的常用命令

注:由於VI與VIM在命令上幾乎相同,所以這里拿VIM為例。

1、模式轉換

  1)正常-->輸入:

    以下這幾個參數實現的功能都是轉為輸入模式,只不過轉換后的光標所在的位置不同

    i:在當前光標所在字符的前面,轉為輸入模式;

    a:在當前光標所在字符的后面,轉為輸入模式;

    o:在當前光標所在行的下方,新建一行,並轉為輸入模式;

    I:在當前光標所在行的行首,轉為輸入模式;

    A:在當前光標所在行的行尾,轉為輸入模式;

    O:在當前光標所在行的上方,新建一行,並轉為輸入模式;

  2)輸入-->正常:

    ESC

  3)正常-->末行:

    :(英文冒號)

  4)末行-->正常:

    ESC

  5)注意:輸入模式和末行模式之間不能直接切換。

2、關閉文件(末行模式)

  :q          退出;

  :q!         不保存強制退出;

  :w          保存;

  :w!         強制保存;

  :wq        保存退出;

  :wq!       強制保存並退出;

  注意:在正常模式下按組合鍵shift + zz可以保存並退出

3、移動光標(正常模式)

  1)逐字符移動:

    h: 左;

    l: 右;

    j: 下;

    k: 上;

    #h: 移動#個字符;

  2)以單詞為單位移動:

    w: 移至下一個單詞的詞首;

    e: 跳至當前或下一個單詞的詞尾;

    b: 跳至當前或前一個單詞的詞首;

    #w: 移動#個單詞;

  3)行內跳轉:

    0: 絕對行首;

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

    $: 絕對行尾;

  4)行間跳轉:

    #G:跳轉至第#行;

    gg: 第一行;

    G:最后一行;

  5)末行模式:

    .: 表示當前行;

    $: 最后一行;

    #:第#行;

    +#: 向下的#行;

4、翻屏(正常模式)

    ctrl+f: 向下翻一屏;

    ctrl+b: 向上翻一屏;

    ctrl+d: 向下翻半屏;

    ctrl+u: 向上翻半屏;

5、復制字符

  1)正常模式

    復制:

      yy:復制當前行

      nyy:復制當前行至下面的n行

    粘貼:

      p:粘貼到光標的后面

      P:粘貼到光標的前面

  2)可視模式

    復制:

      y:復制當前行

      ny:復制當前行至下面的n行

    粘貼:

      p:粘貼到光標的后面

      P:粘貼到光標的前面

6、刪除字符(正常模式)

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

  #x: 刪除光標所在處及向后的共#個字符;

  d$或D:從當前光標處刪除至行尾;

  d^:從當前光標處刪除之行首;

  dd: 刪除當前光標所在行;

  #dd: 刪除包括當前光標所在行在內的#行; 

  注:dd相當於剪切操作,如果你dd之后按p或者P可以進行粘貼。

7、替換字符

  r:替換單個字符(按完r在按你要替換的字符即可)

  R:替換多個字符(從你要替換的位置開始替換,直至你退出正常模式)

8、撤銷編輯操作:u

  u:撤消前一次的編輯操作;

  #u:直接撤消最近#次編輯操作;

  溫馨提示:連續u命令可撤消此前的n次編輯操作;

9、將另外一個文件(/path/sunhui.txt)的內容填充在當前文件夾中

  :r   /path/sunhui.txt :填充到當前文件所在光標的后面

10、修改vim配置文件

  vim   ~/.vimrc:修改當前用戶的vim配置文件

  vim    /etc/vimrc:修改所有用戶的vim配置文件

  例:在當前用戶的vim配置文件中添加顯示行數的命令

  vim    ~/.vimrc:在末行添加 set nu 即可

11、拓展(末行模式)

  1)顯示或取消顯示行號

    :set    nu            //顯示

    :set    number    //顯示

    :set    nonu        //取消

  2)設置語法高亮

    :syntax    on      //開啟

    :syntax    off      //關閉

  3)分屏

    :vsp xxx.x    //將兩個文件垂直分屏

    :ctrl+w w   //切屏

注:該特性當前有效,如果想要永久有效需修改配置文件

 

 

轉自:https://blog.csdn.net/qq_37896194/article/details/80369432?utm_medium=distribute.pc_relevant.none-task-blog-searchFromBaidu-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-searchFromBaidu-2.control


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM