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、 windows。
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)、取代命令r或替換命令s都可以進入文字輸入模式。在該模式下,使用者輸入的任何字元都被vi當做檔案內容儲存起來,並將其顯示在螢幕上。在文字輸入過程中,若想回到命令列模式下,按”ESC”鍵即可。
3、末行模式 (last line mode/指令列命令模式)
末行模式也稱轉義模式。
vi和Ex編輯器的功能是相同的,二者主要區別是使用者介面。在vi中,命令通常是單個鍵,例如i、a、o等;而在Ex中,命令是以按Enter鍵結束的正文行。vi有一個專門的“轉義”命令,可訪問很多面向行的Ex命令。
在命令模式下,使用者按“:”鍵即可進入末行模式下,此時vi會在顯示視窗的最後一行(通常也是螢幕的最後一行)顯示一個“:”作為末行模式的提示符,等待使用者輸入命令。多數檔案管理命令都是在此模式下執行的(如把編輯緩衝區的內容寫到檔案中等)。末行命令執行完後,vi自動回到命令模式。
三、VIM模式
1、正常模式 (Normal-mode)
啟動vim後預設處於正常模式(即命令列模式)。不論位於什麼模式,按下鍵(有時需要按兩下)都會進入正常模式。
2、插入模式 (Insert-mode)
在正常模式中按下i, a, o, I,A,O鍵,會進入插入模式。現在只用記住按i鍵會進行插入模式。在插入模式中,擊鍵時會寫入相應的字元。
3、命令模式 (Command-mode)
在正常模式中,按下:(英文冒號)鍵,會進入命令模式。
在命令模式中可以執行一些輸入並執行一些vim或外掛提供的指令,就像在shell裡一樣。這些指令包括設定環境、檔案操作、呼叫某個功能等等。
4、可視模式 (Visual-mode)
在正常模式中按下v,V,+v,可以進入可視模式。
可視模式中的操作有點像拿滑鼠進行操作,選擇文字的時候有一種滑鼠選擇的即視感,有時候會很方便。
四、VI與VIM的常用命令
注:由於VI與VIM在命令上幾乎相同,所以這裡那VIM為例。
1、模式轉換
正常-->輸入:以下這幾個引數實現的功能都是轉為輸入模式,只不過轉換後的游標所在的位置不同(感興趣可以試一試,雖然意義不大!)
i:在當前游標所在字元的前面,轉為輸入模式;
a:在當前游標所在字元的後面,轉為輸入模式;
o:在當前游標所在行的下方,新建一行,並轉為輸入模式;
I:在當前游標所在行的行首,轉為輸入模式;
A:在當前游標所在行的行尾,轉為輸入模式;
O:在當前游標所在行的上方,新建一行,並轉為輸入模式;
輸入-->正常:
ESC
正常-->末行:
:(英文冒號)
末行-->正常:
ESC,ESC
注意:輸入模式和末行模式之間不能直接切換。
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 //切屏
注:該特性當前有效,如果想要永久有效需修改配置檔案
END
https://cloud.tencent.com/developer/article/1604110