本次記錄vim這款文本編輯器的使用方法及它有哪些使用實例等。
基本概念
在Linux環境中,配置文件對整個系統來說具有舉足輕重的作用,而對於其都是以ASCII的純文本形式存在,而利用文本編輯器就能夠達到方便修改配置的目的。
vi是UNIX操作系統和UNIX Like操作系統中最通用的全屏幕純文本編輯器。而Linux中的vi編輯器叫vim,它是vi的增強版(vi improved),與vi編輯器兼容,而且實現了很多增強功能。
vim的有哪些特點:
1. 所有的UNIX Like系統都會內置的文本編輯器,其他的文本編輯器則不一定會存在
2. 很多軟件的編輯接口都會主動調用它
3. 具有程序編輯的能力,可以主動以字體顏色辨別語法的正確性,方便程序設計
4. 程序簡單,編輯速度相當快速
Vim的工作模式
Vim工作在三種模式下,分別是一般模式、編輯模式與命令模式。
w 一般模式(輸入模式)
Vim打開一個文件就直接進入該模式(默認模式),在這個模式中,可以使用上下左右鍵移動光標,刪除字符或刪除整行,也可以複製、粘貼你的文件數據。
w 編輯模式
一般模式下無法編輯文件內容。通常在Linux中,按下“i, I, a, A, o, O, r, R”按鍵時,在界面的左下方會出現INSERT或REPLACE的字樣,此時纔可以進行編輯。
w 命令模式(末行模式)
在一般模式當中,輸入“:,/,?”中的任何一個,就可以將光標移動到當前屏幕最下面那一行。在此模式下,可以提供查找數據的操作,而讀取、保存、批量替換字符、離開vim、顯示行號等操作也都在此模式下進行。
Vim三種模式切換的方式
1. 一般模式 –> 編輯模式(Insert Mode or Replace Mode)
i a o r I A O R
2. 編輯模式 –>一般模式
【ESC】
3. 一般模式 –>命令模式
: ? /
4. 命令模式 –>一般模式
雙擊【ESC】
一般模式與編輯模式及命令模式可相互切換,但編輯模式與命令模式之間不可相互切換。
Vim通用操作說明
1. 打開vim
vim /PATH/TO/SOMEFILE
請注意,vim後面一定要加文件名,不管該文件名存在與否。
vim +# /PATH/TO/SOMEFILE
#代表行號,表示進入文件後,光標直接定位第幾行。
vim +/PATTERN /PATH/TO/SOMEFILE
PATTERN指定爲字符串,表示進入文件後,光標直接定位到PATTERN所在的行
2. 關閉vim
在命令模式下輸入有關命令退出vim。
:q 退出
:q! 不保存退出
:wq 保存退出(同x, ZZ)
Vim一般模式下操作說明
w 光標跳轉
1. 字符間跳轉
h: 光標向左移動一個字符
l: 光標向右移動一個字符
j: 光標向下移動一個字符
k: 光標向上移動一個字符
#COMMAND #代表數字
2. 單詞間跳轉
w: 光標所在位置的下一個單詞詞首
b: 光標所在位置的上一個單詞詞首
e: 光標所在位置的下一個單詞詞尾
#COMMAND #代表數字
3. 行內跳轉
^: 跳轉至行首的第一個非空白字符
0: 跳轉至行首(功能HOME鍵)
$: 跳轉至行尾(功能END鍵)
4. 行間移動
gg: 跳轉到第一行(同1G)
G: 跳轉到最後一行
n[Enter]: 當前光標所在處向下移動n行(n爲數字)
#G
w 編輯命令
1. 刪除命令:
x: 刪除光標所在的字符(#x)
xp: 相鄰字符對調
dd: 刪除光標所在的整行(#dd)
dw、de、db等
2. 複製命令:
yy: 複製光標所在的整行(#yy)
y1G、yG、y0等
3. 粘貼命令:
1) 如果此複製或刪除的內容不是一個完整行
p: 粘貼至當前光標所在處後面
P: 粘貼至當前光標所在處前面
2) 如果此複製的內容是完整行
p: 粘貼至當前光標所在行下方
P: 粘貼至當前光標所在行上方
4. 改變命令:
cc: 刪除光標所在的整行,並等待用戶鍵入新內容
c$、c0、cw等
5. 撤消命令:
u: 復原前一個操作(#u)
[Ctrl]+r: 重做上一個操作
. : 重複前一個操作
6. 翻屏操作:
[Ctrl]+[f]: 向後一屏
[Ctrl]+[b]: 向前一屏
[Ctrl]+[d]: 向後半屏
[Ctrl]+[u]: 向前半屏
Vim編輯模式下操作說明
i: insert 從當前光標處前面插入
a: append 從當前光標所在下一字符處插入
o: new line 從當前光標所在下一行插入新行
r: replace 替換光標所在的字符一次
I: 從當前光標所在行的第一個非空字符處前面插入
A: 從當前光標所在行的最後一個字符處插入
O: 從當前光標所在的上一行插入新行
R: 一直替換光標所在的文字,直到按下[ESC]鍵爲止
Vim命令模式下操作說明
1. 地址定界範圍
:start_pos,end_pos
#: 移動光標到當前第#行(可帶+-號)
#,#: 從起始行起到結束行範圍
#,+#:從指定的行開始向後移動#行結束
. : 當前行
$: 最後一行
%; 全文,相當於1,$
/pat1/: 定位到第一次被此模式所匹配的行(#,/pat1/)
/pat1/,/pat2/: 從第一次匹配pat1的行開始到第一次匹配pat2結束
後可跟編輯命令:d, y, w, r
2. 查找
/PATTERN: 從當前光標所在位置向尾部進行查找
?PATTERN:從當前光標所在位置向首部進行查找
n: 與命令同方向
N:與命令反方向
3. 查找替換
s: 在地址定界範圍內完成查找替換操作
s/要查找的內容/替換爲的內容/修飾符
要查找的內容:可使用模式
替換爲的內容:不能使用模式,但可以使用後向引用符號,以引用前面模式中的分組括號所匹配到的內容
\1, \2, ...
&: 引用“要查找的內容”匹配到的整個內容
修飾符:
i: 忽略大小寫
g: 全局替換
/: 用於分隔符,所以,要查找的內容或替換爲的內容中出現此符號,要使用\對其轉義,使用格式:\/
分隔符可替換爲其它字符:例如@,#等
:n1,n2s/word1/word2/g 在第n1到n2行之間尋找word1這個字符串,並將該字符串替換爲word2
4. 保存、退出命令
:wq 將編輯的數據寫入硬盤文件後退出(同x)
:wq! 若文件屬性爲“只讀”時,強制寫入且保存後退出
:q 退出vim
:q! 若曾修改過文件,又不想存儲,使用“!”爲強制離開不保存文件
ZZ 若文件沒改動,則不保存離開。若文件被改動,則保存後離開
:w[filename] 將編輯的數據另存到一個文件中(n1,n2w[filename])
:r[filename] 在編輯的數據中,讀入另一個文件的數據,即將此文件內容加到光標所在行後面
:! Command 暫時離開vim到命令行模式下執行command的顯示結果
Vim多文件模式下操作說明
1. 多個文件打開
Vim FILE1 FILE2 ……
:next 進入下一個文件
:first 進入第一個文件
:prev 進入上一個文件
:last 進入最後一個文件
:files 列出目前這個vim打開的所有文件
:wqall 保存所有文件退出
:q!all 不保存強制所有文件退出
2. 多文件窗口分割
Vim –o|-O FILE1 FILE2 ……
-o: 水平分割
-O: 垂直分割
[Ctrl+w], 箭頭鍵 指明文件方向
3. 單文件窗口分割
[Ctrl+w], s: 水平分割
[Ctrl+w], v: 垂直分割
定製Vim的工作特性
1. 行號
顯示:set number
禁用:set nonumber
2. 括號匹配
顯示:set sm
禁用:set nosm
3. 自動縮進
顯示:set ai
禁用:set noai
4. 高亮搜索
顯示:set hlsearch
禁用:set nohlsearch
5. 語法着色
顯示:syntax on
禁用:syntax off
6. 忽略字符大小寫
顯示:set ic
禁用:set noic
Vim特性設定的永久生效方式
全局配置文件:/etc/vimrc
用戶個人的配置文件:~/.vimrc (默認不存在)