vi和Vim的三種主要模式:
命令(Normal)模式:默認模式,移動光標,剪切/粘貼文本
插入(Insert)或編輯模式: 修改文本
擴展命令(extended command )模式: 保存,退出等
* Esc鍵 退出當前模式 * Esc鍵 Esc鍵 總是返回到命令模式
插入模式 ----ESC ----> 命令模式
命令模式 ----:----> 擴展命令模式
擴展命令模式 ----- ESC,enter ---> 命令模式
命令模式 --> 插入模式
i: insert, 在光標所在處輸入
I: 在當前光標所在行的行首輸入
a: (append)在光標所在處後面輸入
A: 在當前光標所在行的行尾輸入
o: 在當前光標所在行的下方打開一個新行
O: 在當前光標所在行的上方打開一個新行
擴展模式: 按“:”進入Ex模式
:q 退出
:q! 強制退出,丟棄做出的修改
:wq 保存退出
:x 保存退出
w 寫(存)磁盤文件
wq 寫入並退出
x 寫入並退出
q 退出
q! 不存盤退出,即使更改都將丟失
r filename 讀文件內容到當前文件中
w filename 將當前文件內容寫入另一個文件
!command 執行命令
r!command 讀入命令的輸出
命令模式 :
ZZ: 保存退出
ZQ:不保存退出
命令模式光標跳轉:
字符間跳轉:
h: 左 l: 右 j: 下 k: 上
#COMMAND:跳轉由#指定的個數的字符
單詞間跳轉:
w : 下一個單詞的詞首
e : 當前或下一單詞的詞尾
b : 當前或前一個單詞的詞首
#COMMAND : 由#指定一次跳轉的單詞數
當前頁跳轉:
H :頁首 M :頁
行首行尾跳轉:
^ : 跳轉至行首的第一個非空白字符
0 : 跳轉至行首
$ : 跳轉至行尾
行間移動:
#G、擴展模式,# :跳轉至由#指定行
G:最後一行
1G, gg: 第一行
句間移動:
):下一句 (:上一句
段落間移動:
}:下一段 {:上一段
命令模式翻屏操作:
Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
字符編輯:
x : 刪除光標處的字符
#x : 刪除光標處起始的#個字符
xp : 交換光標所在處的字符及其後面字符的位置
~ : 轉換大小寫
J : 刪除當前行後的換行符
替換命令(r, replace)
r : 替換光標所在處的字符
R : 切換成REPLACE模式
刪除命令:
d : 刪除命令,可結合光標跳轉字符,實現範圍刪除
d$ : 刪除到行尾
d^ : 刪除到非空行首
d0 : 刪除到行首
dw :
de :
db : #COMMAND
dd : 刪除光標所在的行
#dd :多行刪除
D:從當前光標位置一直刪除到行尾,留空行,等同於d$
複製命令(y, yank) :
y : 複製,行爲相似於 d命令
y$
y0
y^
ye
yw
yb
#COMMAND yy:複製行 #yy: 複製多行 Y: 複製整行
粘貼命令(p, paste):
p :緩衝區存的如果爲整行,則粘貼當前光標所在行的下方;否則,則粘貼至當前光標所在處的後面
P:緩衝區存的如果爲整行,則粘貼當前光標所在行的上方;否則,則粘貼至當前光標所在處的前面
改變命令(c, change)
c: 修改後切換成插入模式 命令模式 --> 插入模式
c$
c^
c0
cb
ce
cw
#COMMAND
#cc:
C:刪除當前光標到行尾,並切換成插入模式
100iwang [ESC] 粘貼“wang”100次
<start position><command><end position>
起始位置 命令 結束位置
Command: y 複製、d 刪除、gU 變大寫、gu 變小寫
例如 :
0y$ 命令意味着: 0 → 先到行頭 y → 從這裏開始拷貝 $ → 拷貝到本行最後一個字符
ye 從當前位置拷貝到本單詞的最後一個字符
地址定界 :start_pos,end_pos
#具體第#行,例如2表示第2行
#,# 從左側#表示起始行,到右側#表示結尾行
#,+# 從左側#表示的起始行,加上右側#表示的行數:2,+3 表示2到5行
. 當前行
$ 最後一行 .,$-1 當前行到倒數第二行
% 全文, 相當於1,$
/pat1/,/pat2/ 從第一次被pat1模式匹配到的行開始,一直到第一次被 pat2匹配到的束
#,/pat/ /pat/,$
使用方式:後跟一個編輯命令
d
y
w file: 將範圍內的行另存至指定文件中
r file:在指定位置插入指定文件中的所有內容
查找
/PATTERN:從當前光標所在處向文件尾部查找
?PATTERN:從當前光標所在處向文件首部查找
n:與命令同方向
N:與命令反方向
s: 在擴展模式下完成查找替換操作格式:
s/要查找的內容/替換爲的內容/修飾符
要查找的內容:可使用模式替換爲的內容:不能使用模式,但可以使用\1, \2, ... 等後向引用符號;還可以使用“&”引用前面查找時查找到的整個內容
修飾符:
i: 忽略大小寫
g: 全局替換;默認情況下,每一行只替換第一次出現
gc:全局替換,每次替換前詢問
查找替換中的分隔符/可替換爲其它字符,例如 s@/etc@/var@g s#/boot#/#i
更改 撤銷
u撤銷最近的更改
#u撤銷之前多次更改
U 撤消光標落在這行後所有此行的更改
按Ctrl - r重做最後的“撤消”更改
. 重複前一個操作
n.重複前一個操作n次
vim 寄存器