Linux 文字編輯器 Vim
Ø 簡介
本文主要記錄 Linux 中文字編輯器 Vim 的使用,包括以下內容:
1. Vim/Vi 簡介
2. Vim/Vi 工作模式
3. 其他命令
4. 應用例項
1. Vim/Vi 簡介
Vim/Vi 是一個功能強大的全螢幕文字編輯器,是 Linux/UNIX 上最常用的文字編輯器。它的作用是建立、編輯、顯示文字檔案。
注意事項:
1) Vim/Vi 沒有選單,只有命令;
2) 在多使用者編輯同一個檔案時,最後一個使用者儲存時,如果檔案已經被改變的話,會給出提示;
3) Vi 文字編輯器有很多的功能,但沒必要都去學習,只需學習常用的文字編輯就可以了。
2. Vim/Vi 工作模式
1) 命令模式
命令模式是 vi 編輯進入的預設模式。
1. 定位命令
h(左鍵) | 左移一個字元 | l(右鍵) | 右移一個字元 |
k(上鍵) | 上移一行 | j(下鍵) | 下移一行 |
0 | 移至行首 | $ | 移至行尾 |
Enter | 移至下行行首 | | |
H | 移至螢幕上端 | M | 移至螢幕中央 |
L | 移至螢幕下端 | | |
gg | 定位到第一行 | G | 定位到最後一行 |
:n 或 ngg 或 nG | 定位到第n行 |
2. 刪除命令
x | 刪除游標後的字元 | X | 刪除游標前的字元 |
nx | 刪除游標後的n個字元 | | |
dd | 刪除游標所在行 | ndd | 刪除游標後的n |
dG | 刪除游標處到檔案末尾的內容 | D | 刪除從游標所在處到行尾 |
:n1,n2d | 刪除指定範圍的行 | | |
3. 複製和剪下命令
yy、Y | 複製當前行 | nyy、nY | 複製當前行以下n行 |
dd | 剪切當前行 | ndd | 剪切當前行以下n行 |
p、P | 貼上在當前游標所在行下或行上 | | |
4. 替換和取消命令
r | 取代游標所在處字元 | R | 從游標所在處開始替換字元,按 Esc 結束 |
s | 刪除游標所在字元,並進入插入模式 | S | 刪除游標所在行,並進入插入模式 |
u | 取消上一步操作(可以取消到檔案開啟時的狀態) | ctrl + r | 取消後再撤回取消 |
U | 取消當前行的所有操作 | | |
5. 搜尋和替換命令
/string | 向前搜尋指定字串。 搜尋時忽略大小寫 :set ic; 搜尋時匹配大小寫 :set noic | n | 搜尋指定字串的下一個出現的位置,N 搜尋上一個出現的位置 |
:%s/old/new/g | 全文替換指定字串,/g表示不確認;/c可以替換前確認 | :n1,n2s/old/new/g | 在一定範圍內替換指定字串,/g表示不確認;/c可以替換前確認 |
說明:替換為空字元可以使用::%s/old//g
6. 替換
r | | 取代游標所在處字元 | R | 從游標所在處開始替換字元,按 Esc 結束 |
2) 插入模式
插入模式用於編輯檔案,使用 I 鍵進入插入模式,此時會在下方出現" -- INSERT -- "的提示;返回命令模式使用 ESC 鍵。
1. 插入命令
i | 在游標前插入文字 | I | 在本行開始插入文字 |
a | 在游標後附加文字 | A | 在本行行末附加文字 |
o | 在游標下插入新行 | O | 在游標上插入新行 |
3) 編輯模式
使用":"鍵進入編輯模式,編輯模式的常用命令:
1. :set number
設定顯示行號,或者 :set nu。
2. :set nonumber
取消顯示行號,或者 :set nonu。
3. :q
退出,或 :q! 強制退出
4. :w
儲存,或 :w! 強制儲存。也可以另存為,例如::w /tmp/file1
注意:單獨執行 w 命令後後,會建立一個於檔案同名的隱藏檔案,例如:.plantask。
5. :wq
儲存並退出(或者使用快捷鍵ZZ;強制儲存退出使用 :wq!,但是隻能是檔案的所有者,或者管理員 root。
注意:執行 :wq 無論檔案是否改變,都會更新檔案的修改時間。
6. :x
寫入檔案並退出,與 :wq 唯一不同的是,只有當檔案真的被修改了,才更新檔案的修改時間,否不會更新。
7. :e!
放棄所有修改,從上次儲存檔案開始重新編輯。
8. :!
在編輯模式下執行任何命令。例如:
:!ifconfig #在編輯模式下檢視IP地址
3. 其他命令
ctrl + f / b #向下/向上翻頁
ctrl + e / y #向下/向上翻滾
4. 應用例項
1) 匯入檔案內容
:r /etc/issue #匯入 issue 檔案中的內容到當前檔案中(命令模式下)
2) 同時開啟多個檔案
vi -o file1 file2 #同時開啟兩個檔案(以垂直方向上下顯示)
vi -O file1 file2 #同時開啟兩個檔案(以水平方向左右顯示,但是不行?)
說明:使用 ctrl + ww 切換編輯的檔案。
3) 在 Vi 中執行命令,格式::!命令,示例:
:!ls -l /learn/services #在 vi 中執行命令
:r !date #匯入命令執行結果
4) 定義快捷鍵,格式::map 快捷鍵 觸發命令,示例:
:map ^P I#<ESC> #定義快捷鍵 Ctrl + p 在行首添加註釋(#)
:map ^B 0x #定義快捷鍵 Ctrl + b 刪除行首的第一個字元(可以用於取消註釋)
:map ^E [email protected] #定義快捷鍵 Ctrl + e 在游標處插入郵箱
注意:定義快捷鍵(如:^P)使用 Ctrl + v + p 來完成輸入。
5) 連續行註釋
:7,11s/^/#/g #在7~11行的行首添加註釋(#)
:7,11s/#//g #在7~11行中替換所有的#號
:7,11s/^#//g #在7~11行中取消註釋
:1,5s/^/\/\//g #在1~5行中新增 // 的註釋,使用"\"轉義符
6) 替換
:ab mymail [email protected] #輸入 mymail + (空格或回車),自動替換為 [email protected]
:unab mymail #取消 mymail 替換
7) 配置 vi 配置檔案 .vimrc
配置 .vimrc 檔案後 vi 配置適用於所有檔案;
該檔案位於每個使用者的 home 目錄下,預設是不存在的,需要單獨建立。
[root@localhost ~]# vi /root/.vimrc
編輯配置內容,例如:
set nu
map ^P I#<ESC>
map ^B 0x
ab mymail [email protected]