vim是一個文本編輯器叉瘩。雖然目前有很多編輯器可選,但是vim很可能是在沒有圖形界面情況下的唯一選擇粘捎,因此還是有必要了解此編輯器薇缅。
如果之前沒有使用過終端中的文本編輯器,可能會對vim有很多的不適應攒磨。需要說明的是捅暴,vim是為終端設計的編輯器,這意味著此編輯器在沒有鼠標的情況下進行操作咧纠。此編輯器的操作邏輯(很大程度來來源于vi)具有很長的歷史,這一方面導致它的邏輯不太能被新用戶接受泻骤,另一個方面也說明這種操作邏輯的健壯性漆羔。
三種模式
vim具有三種模式:一般模式、編輯模式和命令模式狱掂。
打開vim后演痒,就進入了一般模式,在這種模式中趋惨,常用的操作就是光標的移動和行的操作鸟顺,比如行的復制、粘貼和刪除等器虾。
可以從一般模式進入編輯模式和命令模式讯嫂,編輯模式與圖形化的編輯器(比如記事本、寫字板等)非常相似兆沙,可以進行字符級別的操作欧芽。
命令模式的常用操作是搜索、替換葛圃、讀取千扔、保存和對編輯器的設置(比如設置行號和縮進)等操作憎妙。
打開、編輯曲楚、保存厘唾、退出
使用vim打開一個文件很簡單:
$ vim hello.txt
上面的命令會使用vim打開hello.txt
文件,如果hello.txt
存在龙誊,那么將打開該文件抚垃;如果不存在,那么將創(chuàng)建并打開該文件载迄。
進入vim程序后讯柔,就進入了一般模式,這個時候可以使用按鍵h
护昧、j
魂迄、k
、l
移動光標惋耙,分別表示光標向左捣炬、上、下绽榛、右4個方向移動湿酸。
按鍵 | 功能 |
---|---|
h |
向左移動光標 |
j |
向上移動光標 |
k |
向下移動光標 |
l |
向右移動光標 |
下面是一個動圖示例:
為了便于讀者理解,動圖中終端右側的提示表示實際的按鍵灭美。
按i
鍵即可進入編輯模式推溃,也可以使用其他按鍵:
按鍵 | 功能 | 按鍵 | 功能 |
---|---|---|---|
i |
從光標處插入 | I |
所在行第一個非空白字符處插入 |
o |
所在行下面插入新行并在新行插入 | O |
所在行上面插入新行并在新行插入 |
a |
光標處下一個字符插入 | A |
所在行最后字符后插入 |
按i
鍵后,就會進入編輯模式并從光標處開始插入届腐,這時移動光標需要使用鍵盤上的箭頭按鍵铁坎。使用i
進入編輯模式后,vim窗口左下方會顯示-- INSERT --
字樣犁苏,表示用戶正在插入(編輯)模式硬萍。
對文件修改完成后,使用 ESC 鍵返回一般模式围详。
下面是動圖示例:
返回一般模式后朴乖,使用命令模式對文件進行保存。
在一般模式中輸入:
即可進入命令模式助赞,此時vim窗口左下方會顯示:
买羞,之后輸入w
表示寫入文件,即:w
表示寫入文件雹食;:q
表示離開vim哩都;:wq
表示寫入文件后離開vim。
下面是動圖示例:
至此婉徘,我們從一般模式按i
鍵到編輯模式漠嵌,編輯后按ESC
鍵到一般模式咐汞,在命令模式進行保存和離開,完成了對一個文本文件的編輯儒鹿。
下面是幾個命令模式中常用的命令:
命令 | 功能 |
---|---|
:w |
寫入文件 |
:q |
離開 |
:q! |
強制離開 |
:wq |
寫入文件并離開 |
:w filename |
將文件另存為filename文件 |
:n1 n2 w filename |
將n1~n2行另存為filename文件 |
:! command |
暫時到shell中執(zhí)行command命令 |
:set nu |
顯示行號 |
:set nonu |
不顯示行號 |
下面是設置顯示行號和不顯示行號的動圖示例:
一般模式
如上所述化撕,在一般模式中,可以使用h
约炎、j
植阴、k
、l
移動光標圾浅,分別表示光標向左掠手、上、下狸捕、右4個方向移動喷鸽。
下面是一般模式中的常用的操作:
按鍵 | 功能 |
---|---|
Ctrl + f
|
下一頁 |
Ctrl + b
|
上一頁 |
0 |
移動光標至本行開頭 |
$ |
移動光標至本行末尾 |
gg |
移動光標到第一行 |
nG |
n為數(shù)字,移動光標到第n行 |
G |
移動光標到最后一行 |
n<Enter> |
n為數(shù)字灸拍,光標向下移動n行 |
下面是使用gg
和G
在行之間移動光標的動圖示例:
一般模式中可以對行進行復制做祝、粘貼和刪除的操作,下面是常用的操作:
按鍵 | 功能 |
---|---|
yy |
復制光標所在行 |
nyy |
n為數(shù)字鸡岗,復制光標所在行(包含)向下n行 |
p |
在光標所在行下面粘貼 |
P |
在光標所在行上面粘貼 |
dd |
刪除光標所在行 |
ndd |
n為數(shù)字混槐,刪除光標所在行(包含)向下n行 |
下面是使用yy
復制,p
粘貼轩性,在使用ndd
刪除的動圖示例:
還可以使用.
(英文句號)鍵進行重做操作,u
鍵進行撤銷操作揣苏。
搜索與替換
在命令模式中進行搜索與替換:
命令 | 功能 |
---|---|
/word |
向下搜索word |
?word |
向上搜索word |
n |
搜索下一個 |
N |
反向搜索下一個 |
:n1,n2s/word1/word2/g |
n1,n2為數(shù)字悯嗓,在n1~n2行中用word2替換word1,替換時不詢問 |
:1,$s/word1/word2/g |
第一行至最后一行(全文)用word2替換word1舒岸,替換時不詢問 |
:n1,n2s/word1/word2/gc |
n1,n2為數(shù)字,在n1~n2行中用word2替換word1芦圾,替換時詢問 |
下面是一個在vim中搜索的動圖示例:
區(qū)塊操作
vim還支持區(qū)塊操作:
按鍵 | 功能 |
---|---|
v |
字符選擇 |
V |
行選擇 |
Ctrl + v |
區(qū)塊選擇 |
y |
復制區(qū)塊 |
d |
刪除區(qū)塊 |
下面是區(qū)塊操作的動圖示例:
多窗口
vim支持多窗口操作蛾派,下面是常用的操作:
命令或按鍵 | 功能 |
---|---|
:sp filename |
橫向新窗口打開filename文件 |
:vsp filename |
縱向新窗口打開filename文件 |
Ctrl + w 之后 [hjkl]
|
將光標移動到左、上个少、下洪乍、右側窗口 |
下面是兩個縱向窗口的動圖示例: