Vim 編輯器的常用操作匯總,高手必備!
一、vim 介紹
vim 是 vi 的擴(kuò)展,是一個(gè)功能豐富的文本編輯器,對(duì)于一個(gè)運(yùn)維人員的必備基礎(chǔ)技能之一,就是熟練使用 vim/vi 編輯器。在最小化安裝環(huán)境一般只有 vi,沒(méi)有 vim,需要手動(dòng)安裝一下。
yum install -y vim
二、vim 模式
1. 普通模式
默認(rèn)的編輯模式。從 shell 窗口打開(kāi)文件進(jìn)入的第一個(gè)模式,其他模式可以通過(guò)按 ESC 鍵回退到普通模式。
2. 命令模式
用于執(zhí)行復(fù)雜查詢命令,從普通模式輸入“:”,“/”或“?”等符號(hào)即可進(jìn)入命令模式,回車鍵表示輸入完成
3. 插入模式
該模式就類似 window 中操作文本文件,普通模式下可通過(guò)輸入“i”,“o”等字符即可進(jìn)入插入模式。編輯完成后按 ESC 鍵退出到普通模式。
4. 可視模式
用于選定文本塊;可以在正常模式下輸入“v”(小寫)來(lái)按字符選定,輸入“V”(大寫)來(lái)按行選定,或輸入“Ctrl-V”來(lái)按方塊選定。
三、每個(gè)模式的常用操作
1. vim 打開(kāi)文件方法
選項(xiàng) | 說(shuō)明 |
vim filename | 正常打開(kāi)vim文件 |
vim + filename | 打開(kāi)文件,并將光標(biāo)置于最后一行 |
vim +n filename | 打開(kāi)文件,并將光標(biāo)置于第n行 |
vim +/ssh passwd | 打開(kāi)文件,并將光標(biāo)置于第一個(gè)與ssh匹配的位置 |
vim -r filename | 恢復(fù)上次vim打開(kāi)時(shí)崩潰的文件 |
2. 普通模式
操作 | 說(shuō)明 |
G | 跳到最后一行 |
gg | 跳到第一行 |
5G | 跳到第5行 |
yy | 復(fù)制當(dāng)前行 |
5yy | 復(fù)制從當(dāng)前行往后的5行 |
p | 粘貼已復(fù)制的行到光標(biāo)后 |
P | 粘貼已復(fù)制的行到光標(biāo)前 |
dd | (1)剪切當(dāng)前行,以p粘貼;(2)刪除當(dāng)前行 |
5dd | 刪除5行 |
dG | 從當(dāng)前行刪到最后一行 |
D | 從光標(biāo)處刪除到行尾 |
5dG | 從當(dāng)前行刪到第五行 |
x | 刪除光標(biāo)所在位置的字符 |
5x | 刪除光標(biāo)所在位置的字符及往后的5個(gè)字符 |
X | 刪除光標(biāo)所在位置的前一個(gè)字符 |
u | 撤銷之前的操作 |
Ctrl + r | 反撤銷(恢復(fù)撤銷) |
數(shù)字0或者^(guò) | 將光標(biāo)移動(dòng)到當(dāng)前行的行首 |
$ | 將光標(biāo)移動(dòng)到當(dāng)前行的行尾 |
ctrl +f | 向下翻頁(yè) |
ctrl +b | 向上翻頁(yè) |
n | 查找下一個(gè)相同的字符 |
N | 查找上一個(gè)相同的字符 |
r | 替換光標(biāo)所在位置的字符 |
R | 從光標(biāo)當(dāng)前位置開(kāi)始替換字符,輸入內(nèi)容會(huì)覆蓋后面等長(zhǎng)的內(nèi)容,按“Esc”結(jié)束輸入 |
h | 向左移動(dòng)光標(biāo) |
j | 向下移動(dòng)光標(biāo) |
k | 向上移動(dòng)光標(biāo) |
l | 向右移動(dòng)光標(biāo) |
3. 命令模式常用命令
操作 | 說(shuō)明 |
:wq | 保存退出 |
:wq! | 強(qiáng)制保存退出 |
:q | 不保存退出 |
:q! | 強(qiáng)制退出,一般已經(jīng)對(duì)文件內(nèi)容已經(jīng)進(jìn)行了修改,不保存強(qiáng)制退出的情況使用 |
:set nu | 設(shè)置行號(hào)顯示 |
:set nonu | 取消行號(hào) |
:set list | 取消行號(hào) |
set paste | 啟用粘貼模式 |
set nopaste | 關(guān)閉粘貼模式 |
:s/a/b/g | 將當(dāng)前光標(biāo)所在行中所有a替換成b |
:2,5s/a/b/g | 將2-5行中所有a替換成b |
:%s/a/b/g | 將文件所有的a替換成b |
/word | 從文本查找字符串,按“n”可以查看下一個(gè)相同字符 .注意:查找會(huì)區(qū)分大小寫 |
/^word | 查詢以work開(kāi)頭的行 |
/work$ | 查詢以work結(jié)尾 |
?work | 從文本查找字符串,按“n”可以查看上一個(gè)相同字符 |
4. 進(jìn)入插入模式方法
操作 | 說(shuō)明 |
i | 光標(biāo)所在位置插入 |
I | 光標(biāo)所在位置行首插入 |
o | 光標(biāo)所在位置下一行插入 |
O | 光標(biāo)所在位置上一行插入 |
a | 光標(biāo)所在位置下一個(gè)字符的位置插入 |
A | 光標(biāo)所在位置行尾插 |
進(jìn)入到插入模式后就如同進(jìn)入一個(gè)文檔文件,按ESC鍵退出到普通模式
5. 可視化模式常用操作
普通模式進(jìn)入可視化模式:
操作 | 命令 |
v | 字符選擇模式,選中光標(biāo)經(jīng)過(guò)的所有字符 |
V | 行選擇模式,選擇光標(biāo)經(jīng)過(guò)的所有行 |
可視化模式可以實(shí)現(xiàn)批量的刪除增加注釋,生產(chǎn)環(huán)境經(jīng)常使用。
四、vim 可能遇到的問(wèn)題
出現(xiàn)上面的情況有兩種可能:
- 重復(fù)編輯,在另外一個(gè)遠(yuǎn)端也有打開(kāi)這個(gè)文件
- 異常斷開(kāi),在正在編輯時(shí)突然關(guān)機(jī)或網(wǎng)絡(luò)斷開(kāi)的情況
vim 他不是實(shí)時(shí)寫入的機(jī)制,他會(huì)先把文件寫到內(nèi)存,等我們執(zhí)行 w 操作以后,再寫回到原文件。那么在寫回原文件,或者執(zhí)行 q 的放棄操作之前,會(huì)生成一個(gè)臨時(shí)的文件,以 . 開(kāi)頭,以 .swp 結(jié)尾。
解決辦法:直接刪除自動(dòng)生成的臨時(shí)文件file.swp或者報(bào)錯(cuò)界面直接輸入D放棄編輯
rm -f .filename.swp