簡介
vi是"Visual interface"的簡稱, 它在Linux上的地位就仿佛在Edit程序在DOS上一樣。它可以執(zhí)行輸出,刪除,查找,替換,塊操作等眾多文本操作,而且用戶可以根據(jù)自己的需要對其進(jìn)行定制。Vi不是一個(gè)排版程序,他不像Word或者WPS那樣對文字的字體、格式、段落等其他屬性進(jìn)行排版,他只是一個(gè)文本編輯器,而且vi沒有菜單,只有命令,而且命令繁多。
而vim編輯器是Linux/Unix系統(tǒng)下的標(biāo)準(zhǔn)編輯器,是Linux系統(tǒng)中不可或缺的編輯工具,同時(shí)也是vi編輯器的升級版。在使用Mac系統(tǒng)終端功能時(shí)也會(huì)涉及vim編輯器的運(yùn)用。
大部分的Linux系統(tǒng)都是自帶vi或者vim編輯器的,如果沒有安裝,可以運(yùn)行如下命令進(jìn)行安裝:
sudo apt install vim # Ubuntu 系統(tǒng)
yum -y install vim # centos 系統(tǒng)
vim的三種模式
vim通常由三種模式: 一般模式, 插入模式,末行模式。

一般模式
一般模式也稱普通模式或命令行模式。不管叫什么,進(jìn)入vim文件后默認(rèn)看到的就是該模式。在這里可以使用上下左右鍵移動(dòng)光標(biāo),進(jìn)行刪除、復(fù)制等操作處理文件數(shù)據(jù),但無法自由插入數(shù)據(jù)。
復(fù)制粘貼
- 1、按字符:
? 一般模式下輸入字符【v】(小寫)進(jìn)入VISUAL按字符選擇模式,通過【h、j、k、l】或方向鍵(上下左右箭頭)移動(dòng)光標(biāo)選擇要進(jìn)行復(fù)制的字符串,選定后按y復(fù)制,移動(dòng)到目標(biāo)處按p粘貼,h,j,k,l 分別用于光標(biāo)左移,下移,上移,右移;
- 2、按行:
? 一般模式下輸入字符【V】(大寫)進(jìn)入VISUAL LINE按行選擇模式,選擇要進(jìn)行復(fù)制的行,按y復(fù)制,按p粘貼;
- 3、按塊:
? 一般模式下輸入字符【ctrl+v】(大寫)進(jìn)入VISUAL BLOCK按塊選擇模式,選擇要進(jìn)行復(fù)制的塊范圍,按y復(fù)制,按p粘貼;
移動(dòng)光標(biāo)
G :將光標(biāo)移至最后一行行首
G: 移動(dòng)到指定行,行號G (擴(kuò)展:打開文件時(shí)跳轉(zhuǎn)指定行,vi 文件名 +行數(shù))
nG :將光標(biāo)移至第n行行首
gg:移動(dòng)到文件開頭,相當(dāng)于1G
0:光標(biāo)移到所在行行首
$:光標(biāo)移到所在行行尾
w或e:下個(gè)字開頭或結(jié)尾
ctrl+b:前一頁
ctrl+f:后一頁
h: 左移
j: 下移
k: 上移
l: 右移
M: 光標(biāo)移動(dòng)到當(dāng)前屏幕的中間行
L: 光標(biāo)移動(dòng)到當(dāng)前屏幕最后一行行首
w: 向后一次移動(dòng)一個(gè)字
b: 向前一次移動(dòng)一個(gè)字
{: 按段移動(dòng),上移
}: 按段移動(dòng),下移
Ctr-d: 向下翻半屏
Ctr-u: 向上翻半屏
Ctr-f: 向下翻一屏
Ctr-b: 向上翻一屏
查找
/:從上往下查找
?:從下往上查找
n:查找下一處
shift*:快速查找當(dāng)前光標(biāo)所在的詞
修改
r或R:替換當(dāng)前光標(biāo)字符(R則進(jìn)入REPLACE模式)
J:合并上下兩行
\>>或<<:縮進(jìn)或反縮進(jìn)
刪除
x:刪除光標(biāo)處字符
X:刪除光標(biāo)前的字符
nx:刪除光標(biāo)處開始的n個(gè)字符
dd: 刪除光標(biāo)所在行,n dd 刪除指定的行數(shù)
D:從光標(biāo)開始刪至行末
dw: 刪除光標(biāo)開始位置的字,包含光標(biāo)所在字符
d0: 刪除光標(biāo)前本行所有內(nèi)容,不包含光標(biāo)所在字符
.:重復(fù)前一個(gè)操作
撤銷
u: 一步一步撤銷
ctrl + r : 反撤銷
插入模式
i: 插入光標(biāo)前一個(gè)字符
I: 插入行首
a: 插入光標(biāo)后一個(gè)字符
A: 插入行未
o: 向下新開一行,插入行首
O: 向上新開一行,插入行首
末行模式
在命令模式下, 按Shift + ; 進(jìn)行末行模式
退出
:q 退出
:q! 退出并不保存
:w 保存不退出
:wq 保存并退出
:x 保存并退出
:wq! 保存并強(qiáng)制退出
替換
把a(bǔ)bc全部替換成xxxx
末行模式下,將當(dāng)前文件中的所有abc替換成xxx。如果不使用 g,則只會(huì)替換每一行的第一個(gè) abc
:%s/abc/xxx/g
末行模式下,將第一行至第10行之間的abc替換成xxx
:1, 10s/abc/xxx/g