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