衆多 Linux 發行版系統,一般都已經默認安裝好了 vi 或 Vim 文本編輯器,Centos 也不例外,該系統就默認安裝有 vi 文本編輯器,但建議你們使用 Vim。
html
若是在命令行模式下輸入「vim」,輸出結果爲「Command not found」,則表示此係統中未安裝 Vim。程序員
CentOS 系統中,使用以下命令便可安裝 Vim:vim
yum install vimssh
須要注意的是,此命令運行時,有時須要手動確認 [y/n],如圖 1 所示:編輯器
圖 1 安裝過程ide
遇到此狀況,選擇 「y」 便可。
若是你想省略手動輸入「y」的過程,但願全自動安裝,可使用以下這條命令:
函數
yum -y install vimspa
當命令行中輸入「Vim」顯示如圖 1 所示的畫面時,視爲 Vim 安裝成功。.net
圖 1 Vim 安裝成功界面命令行
Vim的命令模式
使用 Vim 編輯文件時,默認處於命令模式。此模式下,可以使用方向鍵(上、下、左、右鍵)或 k、j、h、i 移動光標的位置,還能夠對文件內容進行復制、粘貼、替換、刪除等操做。
圖 2 所示是在 CentOS 6.x 系統中 Vim 處於命令模式的狀態示意圖。
圖 2 Vim 處於命令狀態
Vim的輸入模式
在輸入模式下,Vim 能夠對文件執行寫操做,相似於在 Windows 系統的文檔中輸入內容。
使 Vim 進行輸入模式的方式是在命令模式狀態下輸入 i、I、a、A、o、O 等插入命令(各指令的具體功能如表 3 所示),當編輯文件完成後按 Esc 鍵便可返回命令模式。
快捷鍵 | 功能描述 |
---|---|
i | 在當前光標所在位置插入隨後輸入的文本,光標後的文本相應向右移動 |
I | 在光標所在行的行首插入隨後輸入的文本,行首是該行的第一個非空白字符,至關於光標移動到行首執行 i 命令 |
o | 在光標所在行的下面插入新的一行。光標停在空行首,等待輸入文本 |
O | 在光標所在行的上面插入新的一行。光標停在空行的行首,等待輸入文本 |
a | 在當前光標所在位置以後插入隨後輸入的文本 |
A | 在光標所在行的行尾插入隨後輸入的文本,至關於光標移動到行尾再執行a命令 |
圖 4 所示即爲 Vim 處於輸入模式狀態下的示意圖。
圖 4 Vim 處於輸入模式
編輯模式用於對文件中的指定內容執行保存、查找或替換等操做。
使 Vim 切換到編輯模式的方法是在命令模式狀態下按「:」鍵,此時 Vim 窗口的左下方出現一個「:」符號,這是就能夠輸入相關指令進行操做了。
指令執行後 Vim 會自動返回命令模式。如想直接返回命令模式,按 Esc 便可。
圖 4 所示爲 Vim 進入編輯模式後的狀態。
圖 4 Vim 進行編輯模式
使用 Vim 打開文件很簡單,例如在命令行模式下打開一個本身編寫的文件 /test/vi.test,打開方法以下:
[root@itxdl ~]# vim /test/vi.test
剛打開文件時 Vim 處於命令模式,此時文件的下方會顯示文件的一些信息,包括文件的總行數和字符數,以及當前光標所在的位置等,此時可使用插入命令進入輸入模式對文件進行編輯,如圖 1 所示。
圖 1 Vim 打開文件
除此以外,咱們還能夠利用下表中打開文件的命令格式,針對特定情形使用適當的打開方式,能夠大大提升咱們的效率。
Vi 使用的選項 | 說 明 |
---|---|
vim filename | 打開或新建一個文件,並將光標置於第一行的首部 |
vim -r filename | 恢復上次 vim 打開時崩潰的文件 |
vim -R filename | 把指定的文件以只讀方式放入 Vim 編輯器中 |
vim + filename | 打開文件,並將光標置於最後一行的首部 |
vi +n filename | 打開文件,並將光標置於第 n 行的首部 |
vi +/pattern filename | 打幵文件,並將光標置於第一個與 pattern 匹配的位置 |
vi -c command filename | 在對文件進行編輯前,先執行指定的命令 |
一樣,Vim 提供了大量的編輯快捷鍵,主要可分爲如下幾類。
從命令模式進入輸入模式進行編輯,能夠按下 I、i、O、o、A、a 等鍵來完成,使用不一樣的鍵,光標所處的位置不一樣,如表 3 所示。
快捷鍵 | 功能描述 |
---|---|
i | 在當前光標所在位置插入隨後輸入的文本,光標後的文本相應向右移動 |
I | 在光標所在行的行首插入隨後輸入的文本,行首是該行的第一個非空白字符,至關於光標移動到行首執行 i 命令 |
o | 在光標所在行的下面插入新的一行。光標停在空行首,等待輸入文本 |
O(大寫) | 在光標所在行的上面插入新的一行。光標停在空行的行首,等待輸入文本 |
a | 在當前光標所在位置以後插入隨後輸入的文本 |
A | 在光標所在行的行尾插入隨後輸入的文本,至關於光標移動到行尾再執行 a 命令 |
快捷鍵 | 功能描述 |
---|---|
/abc | 從光標所在位置向前查找字符串 abc |
/^abc | 查找以 abc 爲行首的行 |
/abc$ | 查找以 abc 爲行尾的行 |
?abc | 從光標所在爲主向後查找字符串 abc |
n | 向同一方向重複上次的查找指令 |
N | 向相反方向重複上次的查找指定 |
例如,在 /etc/passwd.vi 文件中查找字符串 "root",則運行命令如圖 5 所示。
圖 5 使用 Vim 進行查找
若是在文件中並無找到所要查找的字符串,則在文件底部會出現 "Pattern not found" 提示,如圖 6 所示。
圖 6 未查找到指定字符串的提示
在查找過程當中須要注意的是,要查找的字符串是嚴格區分大小寫的,如查找 "shenchao" 和 "ShenChao" 會獲得不一樣的結果。
若是想忽略大小寫,則輸入命令 ":set ic";調整回來輸入":set noic"。
若是在字符串中出現特殊符號,則須要加上轉義字符 "\"。常見的特殊符號有 \、*、?、$ 等。若是出現這些字符,例如,要查找字符串 "10$",則須要在命令模式中輸入 "/10\$"。
快捷鍵 | 功能描述 |
---|---|
r | 替換光標所在位置的字符 |
R | 從光標所在位置開始替換字符,其輸入內容會覆蓋掉後面等長的文本內容,按「Esc」能夠結束 |
:s/a1/a2/g | 將當前光標所在行中的全部 a1 用 a2 替換 |
:n1,n2s/a1/a2/g | 將文件中 n1 到 n2 行中全部 a1 都用 a2 替換 |
:g/a1/a2/g | 將文件中全部的 a1 都用 a2 替換 |
例如,要將某文件中全部的 "root" 替換爲 "liudehua",則有兩種輸入命令,分別爲:
:1, $s/root/liudehua/g
或
:%s/root/liudehua/g
上述命令是在編輯模式下操做的,表示的是從第一行到最後一行,即全文查找 "root",而後替換成 "liudehua"。
若是剛纔的命令變成 :10,20 s/root/liudehua/g
,則只替換從第 10 行到第 20 行的 "root"。
快捷鍵 | 功能描述 |
---|---|
x | 刪除光標所在位置的字符 |
dd | 刪除光標所在行 |
ndd | 刪除當前行(包括此行)後 n 行文本 |
dG | 刪除光標所在行一直到文件末尾的全部內容 |
D | 刪除光標位置到行尾的內容 |
:a1,a2d | 函數從 a1 行到 a2 行的文本內容 |
注意,被刪除的內容並無真正刪除,都放在了剪貼板中。將光標移動到指定位置處,按下 "p" 鍵,就能夠將剛纔刪除的內容又粘貼到此處。
快捷鍵 | 功能描述 |
---|---|
p | 將剪貼板中的內容粘貼到光標後 |
P(大寫) | 將剪貼板中的內容粘貼到光標前 |
y | 複製已選中的文本到剪貼板 |
yy | 將光標所在行復制到剪貼板,此命令前能夠加數字 n,可複製多行 |
yw | 將光標位置的單詞複製到剪貼板 |
某些狀況下,可能須要把兩行進行鏈接。好比說,下面的文件中有兩行文本,如今須要將其合併成一行(實際上就是將兩行間的換行符去掉)。能夠直接在命令模式中按下 "J" 鍵,按下先後如圖 10 所示。
圖 10 按下 "J" 鍵先後
若是不當心誤刪除了文件內容,則能夠經過 "u" 鍵來撤銷剛纔執行的命令。若是要撤銷剛纔的屢次操做,能夠多按幾回 "u" 鍵。
Vim 的保存和退出是在編輯模式中進行的,其經常使用命令以下表所示。
命令 | 功能描述 |
---|---|
:wq | 保存並退出 Vim 編輯器 |
:wq! | 保存並強制退出 Vim 編輯器 |
:q | 不保存就退出 Vim 編輯器 |
:q! | 不保存,且強制退出 Vim 編輯器 |
:w | 保存可是不退出 Vim 編輯器 |
:w! | 強制保存文本 |
:w filename | 另存到 filename 文件 |
x! | 保存文本,並退出 Vim 編輯器,更通用的一個 vim 命令 |
ZZ | 直接退出 Vim 編輯器 |
須要注意的是,"w!" 和 "wq!" 等相似的指令,一般用於對文件沒有寫權限的時候(顯示 readonly,如圖 12 所示),但若是你是文件的全部者或者 root 用戶,就能夠強制執行。
圖 12 只讀文件
Vim 文本編輯器中,最簡單的移動光標的方式是使用方向鍵,但這種方式的效率過低,更高效的方式使用快捷鍵。
Vim 移動光標經常使用的快捷鍵及其功能以下面各表所示,須要注意的是,表中全部的快捷鍵都在命令模式(默認狀態)下直接使用。
快捷鍵 | 功能描述 |
---|---|
h | 光標向左移動一位 |
j | 光標向下移動一行(以回車爲換行符),也就是光標向下移動 |
k | 光標向上移動一行(也就是向上移動) |
l | 光標向右移動一位 |
最初使用,你們可能以爲比較彆扭,但熟能生巧,使用此方式移動光標一樣可以提升編輯速度。
某些情形下,可能須要光標迅速移動至一行中的某個位置,將光標以單詞爲單位進行移動就會很方便。
快捷鍵 | 功能描述 |
---|---|
w 或 W | 光標移動至下一個單詞的單詞首 |
b 或 B | 光標移動至上一個單詞的單詞首 |
e 或 E | 光標移動至下一個單詞的單詞尾 |
nw 或 nW | n 爲數字,表示光標向右移動 n 個單詞 |
nb 或 nB | n 爲數字,表示光標向左移動 n 個單詞 |
快捷鍵 | 功能描述 |
---|---|
0 或 ^ | 光標移動至當前行的行首 |
$ | 光標移動至當前行的行尾 |
n$ | 光標移動至當前行只有 n 行的行尾,n爲數字 |
一行中,若是須要將光標移動到當前行的某個特色字符,則可使用表 4 中的快捷鍵。
快捷鍵 | 功能描述 |
---|---|
fx | 光標移動至當前行中下一個 x 字符處 |
Fx | 光標移動至當前行中下一個 x 字符處 |
快捷鍵 | 功能描述 |
---|---|
gg | 光標移動到文件開頭 |
G | 光標移動至文件末尾 |
nG | 光標移動到第 n 行,n 爲數字 |
:n | 編輯模式下使用的快捷鍵,能夠將光標快速定義到指定行的行首 |
程序員在編輯程序時,常常會爲將光標移動到與一個 "(" 匹配的 ")" (對於 [] 和 {} 也是同樣的)處而感到頭疼。Vim 裏面提供了一個很是方便地査找匹配括號的命令,這就是 "%"。
好比,在 /etc/init.d/sshd 腳本文件中(最好仍是複製後練習,當心駛得萬年船),想迅速地將光標定位到與第 49 行的 "{" 相對應的 "}" 處,則能夠將光標先定位在 "{" 處,而後再使用 "%" 命令,使之定位在 "}" 處,如圖 6 所示。
圖 6 使用"%"命令定位括號
Vim多窗口模式
Vim中的多窗口打開
vim中,默認的多窗口打開,是橫向分割窗口。
進入vim編輯器之後,能夠經過new命令,新建一個子窗口
:new 「新建一個未命名窗口
:new name "新建一個名爲name的文件
進入vim之後,也能夠經過splite來進行橫向窗口分割
:split name "在當前位置打開name文件 將原來文件向下移動
:sp name "是splite的縮寫 與split功能相同
進入vim後,也能夠經過vsplit進行窗口縱向分割
:vsplit name "在當前位置打開name文件 將原來文件向右移動
:vs name "是vsplite的縮寫 與vsplit功能相同
2. Vim中的多窗口切換
vim中的多窗口切換能夠經過Ctrl+w組合鍵加上方向選擇鍵來實現
橫向分割的窗口能夠經過Ctrl+w+j/k或者Ctrl+w+(UP)/(DOWN)來實現上下窗口間切換
縱向分割的窗口能夠經過Ctrl+w+h/l或者Ctrl+w+(LEFT)/(RIGHT)來實現上下窗口間切換
連續兩次按下Ctrl+w也組合鍵能夠實現多個窗口間的依次切換
3. Vim中多窗口的調整
窗口的調整能夠分爲絕對值調整和增量式調整
絕對值調整以下:
:resize num "將窗口的高度調整爲num行
:res num "resize的縮寫模式 與resize實現一樣的功能
:vertical resize num "將窗口的寬度調整爲num列
:verticalres num "verticalresize的縮寫模式 與verticalresize實現一樣的功能
增量式調整以下:
:resize+num "將窗口的高度增長num行
:resize-num "將窗口的高度減小num行
:vertical resize+num "將窗口的寬度增長num列
:vertical resize-num "將窗口的寬度減小num列
將resize簡寫爲res能實現一樣的功能。
4.Vim中多窗口的關閉
vim中多窗口的關閉與單個窗口的關閉基本類似
:q "退出當前所在的窗口
:qa "退出全部的窗口