Vi(Visual Interface) 是一種文本編輯器衰腌,常見的文本編譯器有ASCII編碼飞傀,UNICODE編碼等涝涤。Vim即vi improved :是vi的增強(qiáng)版,vim是模式化的編輯沪摄。
vim在工作中有3種模式:
-編輯模式:也叫命令模式,:默認(rèn)模式,移動光標(biāo)杨拐,剪切/粘貼文本祈餐;
-插入模式:在文本文件當(dāng)中進(jìn)行輸入內(nèi)容;
-末行模式:vim內(nèi)置的命令接口哄陶,執(zhí)行vim的內(nèi)置命令帆阳,保存,退出等
如下圖所示:
文字解釋三者之間的模式轉(zhuǎn)換:
命令–>插入:
i: 在當(dāng)前光標(biāo)所在字符的前面屋吨,轉(zhuǎn)為輸入模式蜒谤;
I:在當(dāng)前光標(biāo)所在行的行首,轉(zhuǎn)換為輸入模式
A:在當(dāng)前光標(biāo)所在行的行尾至扰,轉(zhuǎn)換為輸入模式
a: 在當(dāng)前光標(biāo)所在字符的后面鳍徽,轉(zhuǎn)為輸入模式;
o: 在當(dāng)前光標(biāo)所在行的下方敢课,新建一行阶祭,并轉(zhuǎn)為輸入模式;
O:在當(dāng)前光標(biāo)所在行的上方直秆,新建一行濒募,并轉(zhuǎn)為輸入模式;
插入–>命令:
ESC
命令–>擴(kuò)展:
:
擴(kuò)展–>命令:
ESC圾结,Enter
注意:插入模式和擴(kuò)展命令模式之間不能直接切換萨咳。
EX:使用Esc2次或enter回到命令模式,將沒有:
q退出
q!強(qiáng)制退出
w保存
wq或x保存并退出
wq!或x!當(dāng)文件對當(dāng)前用戶權(quán)限為read-only時疫稿,可以強(qiáng)制保存并退出(僅限r(nóng)oot和當(dāng)前文件的owner)
vim +# :打開文件培他,直接讓光標(biāo)處于第#行的行首
vim +:打開文件,定位至最后一行遗座,默認(rèn)行尾
vim +/PATTERN : 打開文件舀凛,直接讓光標(biāo)處于第一個PATTERN匹配到的行的行首
–b file 二進(jìn)制方式打開文件
–d file1 file2… 比較多個文件
-m file 只讀打開文件
ex file 或 vim –e 直接進(jìn)入ex模式
如果該文件存在,文件被打開并顯示內(nèi)容
如果該文件不存在途蒋,當(dāng)編輯后第一次存盤時創(chuàng)建它
1猛遍、擴(kuò)展模式關(guān)閉文件
:q 退出
:wq 保存并退出
:q! 不保存并退出
:w 保存
:w! 強(qiáng)行保存
:wq! 強(qiáng)行保存退出
2号坡、命令模式下退出
ZZ: 保存并退出
ZQ:不保存退出
1懊烤、逐字符移動:
h: 左
l: 右
j: 下
k: 上
#h: 表示移動#個字符
2、以單詞為單位移動
w: 移至下一個單詞的詞首
e: 跳至當(dāng)前或下一個單詞的詞尾
b: 跳至當(dāng)前或前一個單詞的詞首
#w: 表示移動#個單詞
3宽堆、行內(nèi)跳轉(zhuǎn):
0: 絕對行首
^: 行首的第一個非空白字符
$: 絕對行尾
4腌紧、行間跳轉(zhuǎn)
#G:跳轉(zhuǎn)至第#行
gg: 第一行
G:最后一行
5、當(dāng)前頁跳轉(zhuǎn):
H:頁首 M:頁中間行 L:頁底
## vim編輯命令 ##
1畜隶、翻屏
Ctrl+f: 向下翻一屏
Ctrl+b: 向上翻一屏
Ctrl+d: 向下翻半屏
Ctrl+u: 向上翻半屏
2壁肋、刪除單個字符
x: 刪除光標(biāo)所在處的單個字符
#x: 刪除光標(biāo)處起始的#個字符
xp: 交換光標(biāo)所在處的字符及其后面字符的位置
刪除命令: d
d命令跟跳轉(zhuǎn)命令組合使用
d$: 刪除到行尾
d^:刪除到非空行首
d0:刪除到行首
dw:刪除下一個單詞的詞首
de:刪除跳至當(dāng)前或下一個單詞的詞尾
db:刪除跳至當(dāng)前或前一個單詞的詞首
dd: 刪除當(dāng)前光標(biāo)所在行
dd: 刪除包括當(dāng)前光標(biāo)所在行在內(nèi)的#行号胚;
粘貼命令 p
p: 如果刪除或復(fù)制為整行內(nèi)容,則粘貼至光標(biāo)所在行的下方浸遗,如果復(fù)制或刪除的內(nèi)容為非整行猫胁,則粘貼至光標(biāo)所在字符的后面
P: 如果刪除或復(fù)制為整行內(nèi)容,則粘貼至光標(biāo)所在行的上方跛锌,如果復(fù)制或刪除的內(nèi)容為非整行弃秆,則粘貼至光標(biāo)所在字符的前面
復(fù)制命令 y
用法同d命令
#yy: 復(fù)制多行
Y: 復(fù)制整行
修改:先刪除內(nèi)容,再轉(zhuǎn)換為輸入模式
c: 用法同d命令
cc:刪除當(dāng)前行并輸入新內(nèi)容
C:刪除當(dāng)前光標(biāo)到行尾髓帽,并切換成插入模式
撤消編輯操作 u
u:撤消前一次的編輯操作
#u: 直接撤消最近#次編輯操作
連續(xù)u命令可撤消此前的n次編輯操作
撤消最近一次撤消操作:Ctrl+r
## 擴(kuò)展模式 ##
1菠赚、內(nèi)容界定
.: 表示當(dāng)前行
:最后一行.,-1 當(dāng)前行到倒數(shù)第二行
# 具體第#行,例如2表示第2行
+#: 從左側(cè)#表示的起始行氢卡,加上右側(cè)#表示的行數(shù) 如:2,+3 表示2到5行
##:從左側(cè)#表示起始行锈至,到右側(cè)#表示結(jié)尾行
% 全文, 相當(dāng)于1,$
2、查找
/PATTERN 從當(dāng)前光標(biāo)所在處向文件尾部查找
?PATTERN 從當(dāng)前光標(biāo)所在處向文件首部查找
n 與命令同方向
N 與命令反方向
查找并替換
在末行模式下使用s命令
格式:s/要查找的內(nèi)容/替換為的內(nèi)容/修飾符
修飾符:
i: 忽略大小寫
g: 全局替換译秦;默認(rèn)情況下峡捡,每一行只替換第一次出現(xiàn)
gc:全局替換,每次替換前詢問
查找替換中的分隔符/可替換為其它字符筑悴,例如
s@/etc@/var@g
s#/boot#/#i
多文件模式
使用vim編輯多個文件
vim FILE1 FILE2 FILE3
:next 切換至下一個文件
:prev 切換至前一個文件
:last 切換至最后一個文件
:first 切換至第一個文件
:q退出當(dāng)前文件
:wall 保存所有
:qall 退出所有
:wqall保存所有文件并退出
## 多窗口模式 ##
分屏顯示一個文件
Ctrl+w, s: 水平拆分窗口
Ctrl+w, v: 垂直拆分窗口
在窗口間切換光標(biāo):
Ctrl+w, ARROW(h,j,k,l或方向鍵)
:qa 關(guān)閉所有窗口
分窗口編輯多個文件
vim -o : 水平分割顯示
vim -O : 垂直分割顯示
q 能退出多窗口模式
/pat1/,/pat2/
從第一次被pat1模式匹配到的行開始们拙,一直到第一次被
pat2匹配到的行結(jié)束
#,/pat/ :從第#行開始到第一次匹配到pat為止
/pat/,$:從第一次匹配到pat到最后一行
使用方式:后跟一個編輯命令
d(刪除)
y(復(fù)制)
w file: 將范圍內(nèi)的行另存至指定文件中
r file:在指定位置插入指定文件中的所有內(nèi)容
1阁吝、顯示或取消顯示行號
:set nu
:set nonu
nu = number
2砚婆、顯示忽略或區(qū)分字符大小寫
:set ic
:set noic
ic = ignorecase
3、設(shè)定自動縮進(jìn)
:set ai
:set noai
ai = autoindent
4突勇、查找到的文本高亮顯示或取消
:set hlsearch
:set nohlsearch
5装盯、語法高亮
:syntax on
:syntax off
注意:特性當(dāng)前有效,如果想要永久有效需修改配置文件
配置文件定義:
/etc/vimrc 針對所有用戶
~/.vimrc 針對當(dāng)前用戶
1甲馋、復(fù)制/etc/profile至/tmp/目錄埂奈,用查找替換命令刪除/tmp/profile文件中的行首的空白字符
%s/^[[:blank:]]+//g
思路:
查找內(nèi)容為空白字符為首要加^,替換內(nèi)容為空白,g表示全局替換定躏。
2账磺、復(fù)制/etc/rc.d/init.d/functions文件至/tmp目錄,用查找替換命令為/tmp/functions的每行開頭為空白字符的行的行首添加一個#號
%s/^[[:spacge:]]/# /g
或%s/^([[:space:]])/#\1/g
或%s/^[[:space:]]/#&/
思路:第二種方法使用了后向引用痊远,\1表示引用[[:space:]],#號后都為空白字符垮抗。第三種方法中&相當(dāng)于前面的空白字符。
3碧聪、復(fù)制/etc/rc.d/init.d/functions文件至/tmp目錄冒版,替換/tmp/functions文件中的/etc/sysconfig/init為/var/log
%s/\/etc/sysconfig/init/\/viar/log/gi
思路:這里的\表示轉(zhuǎn)義,gi表示全局替換矾削,忽略大小寫
4壤玫、刪除/tmp/functions文件中所有以#開頭豁护,且#后面至少有一個空白字符的行的行首的#號
%s/^#[[:space:]]{1,}//g
思路:\{1,\}表示匹配前面命令至少1次哼凯,查找內(nèi)容為:^#[[:space:]]\{1,\}欲间,替換內(nèi)容:要刪除所以為空。