Vim常用命令及用法
1切換插入模式:
命令模式下
a (小寫)光標之後進行插入
A (大寫)光標所在行尾進行插入
i (小寫)光標前開始進行插入
I (大寫)光標所在行首進行插入
o (小寫)光標所在行後新插入一空行進行插入
O (大寫)光標所在行前新插入一空行進行插入
插入模式下按ESC鍵返回命令模式
2 切換到編輯模式
命令模式下按【:】進入編輯模式,鍵入命令回車後自動返回到命令模式或按ESC鍵返回到命令模式。
3 保存文件
編輯模式下
:w (小寫)保存文件
:wq (小寫)保存並退出vim
:w 文件名1 將文件另存為文件名1
:ZZ (大寫)保存文件並退出,相當於:wq
:wq! (小寫)文件所有者強制保存只讀文件,如果不是文件所有者進行此操作,不能成功
:q! 退出不保存文件
4 復制(yank)
命令模式下
yy或 Y 復制光標所在整行
y^ 復制到光標所在行行首,不包括光標位置字符
y$ 復制到光標所在行行尾,包括光標位置字符
yw 復制一個單詞,光標必須在單詞首部
yG 復制到文件尾
y1G 復制到文件首
nyy 復制光標所在行開始的n行
5 粘貼
命令模式下
p (小寫)粘貼到光標後
P (大寫)粘貼到光標前
6 刪除
命令模式下
x (小寫)刪除光標前一個字符
X (大寫)刪除光標後一個字符
dd (小寫)刪除光標所在整行
dw (小寫)刪除光標所在處一個單詞
dG 刪除光標所在整行到文件尾
dgg 刪除光標所在整行到文件首
D (大寫)刪除到行尾,包含光標處的字符
d$ 與D效果相同
d0 刪除到行首,不包含光標處的字符
d^ 與d0效果相同
:n1,n2d 編輯模式下,刪除n1-n2行
7撤銷
命令模式下
u (小寫)無限次保存前撤銷(大概500多次)
ctrl+r redo
8 字符替換
命令模式下
r (小寫)替換光標所在處一個字符
R (大寫)開始替換,直到按ESC鍵退出替換,相當於按下鍵盤上到insert鍵
cc (小寫)取代光標所在整行
S (大寫)與ss(小寫)效果相同
C (大寫)取代到行尾,包括光標處字符
c0 (小寫,數字0)取代到行首,不包括光標處字符
c^ (小寫)與c0(小寫,數字0)效果相同
9 字符串查找和替換
命令模式下
/string 從光標處開始向下開始查找字符串string
/查找模式下按n(小寫)查找下一個,按N(大寫)查找上一個
?string 從光標處開始向上開始查找字符從string
?查找模式下按n(小寫)查找上一個,按N(大寫)查找下一個
* 向下完整匹配光標下的單詞
# 向上完整匹配光標下的單詞
g* 向下部分匹配光標下的單詞
g# 向上部分匹配光標下到單詞
編輯模式下
:set ic 查找時,忽略大小寫
:set noic 取消查找時忽略大小寫
:f string (小寫f與string有空格)搜索一行中匹配到的string
:%s/old/new/g 全文將old替換為new,不提示
:%s/old/new/c 全文將old替換為new,提示是否替換
:n1,n2s/old/new/g n1-n2行中,將old替換為new,不提示
:n1,n2s/old/new/c n1-n2行中,將old替換為new,提示是否替換
在替換文本old或new中有/字符時,需要用\進行轉義
10 顯示行號
編輯模式下
:set nu(mber) 顯示行號
:set nonu 取消顯示行號
:set nu! 取消顯示行號
11 簡單排版
編輯模式下
:ce(nter) 居中顯示光標所在行
:ri(ght) 靠右顯示光標所在行
:le(ft) 靠左顯示光標所在行
命令模式下
J 將光標所在下一行合並到光標所在行
>> 光標所在行增加縮進(一個tab)
<< 光標所在行減少縮進(一個tab)
n>> 光標所在行開始的n行增加縮進
n<< 光標所在行開始的n行減少縮進
12 書簽
命令模式下
mx 設定書簽,x是任意一個字母,通常小寫(a-z),x為小寫字母時,局限在一個文件之間切換;大寫字母時,可在文件之間切換.
`x (`位於數字鍵1旁邊)跳轉到書簽x
編輯模式下
:marks 查看標簽
13 光標移動方式
命令模式下
H (大寫,Head)移動到屏幕頂第一個非空白字符
M (大寫,Mid)移動到屏幕中間第一個非空白字符
L (大寫,Last)移動到屏幕底部第一個非空白字符
( (左小括號)移動到上一個句子首
) (右小括號)移動到下一個句子首
{ (左大括號)移動到上一個段落首
} (右大括號)移動到下一個段落首
% 光標跳轉到匹配到括號處,支持{}()
[[ 光標跳轉到代碼塊開頭即{處,要求{獨占一行
gD 光標跳轉到局部變量定義處
'' (兩個單引號)光標跳轉到上次停靠處
h (小寫)光標左移一個字符,相當於左方向鍵
l (小寫)光標右移一個字符,相當於右方向鍵
k (小寫)光標垂直上移一行,相當於上方向鍵
j (小寫)光標垂直下移一行,相當於下方向鍵
ctrl+f (forword)向下整頁翻頁
ctrl+b (backward)向上整頁翻頁
ctrl+u (up)向上翻半頁
ctrl+d (down)向下翻半頁
zz (小寫)讓光標所在行居於屏幕中央
zt (小寫)讓光標所在行居於屏幕最頂部
zb (小寫)讓光標所在行居於屏幕底部
編輯模式下
:n 指定移動到第n行
14 數字前綴與重復
命令模式下
將數字加在命令前,標示該命令處理幾次,如5dd標示執行5次dd(刪除光標所在整行)操作。
. (英文句號)為命令重復命令,按下一次執行一次上一次執行過的命令。
15 浏覽目錄
編輯模式下
:e 目錄 列出指定目錄下的文件和目錄
16 vim技巧
技巧1 導入文件或shell命令執行結果
編輯模式下
:r 文件名1 將文件1內容引入到本文件中
:!shell命令 在vim中執行shell命令,執行完後按回車會到vim界面
:r !shell命令 (r與!之間有空格)將shell命令執行的結果導入到本文件中
技巧2 自定義快捷鍵操作
編輯模式下
:map ^x 命令 (map與^之間、x與命令之間有空格,此處到^並非鍵盤上的^,而是按下ctrl+v出現到快捷鍵,表示ctrl鍵,後面到x為任意字母)按下ctrl+x後會執行對應到命令
例:
:map ^p I#<ESC> 當按下ctrl+p快捷組合鍵時,在光標所在行行首添加一個#號,並回到命令模式
技巧3 連續行注釋
編輯模式下
:n1,n2/^/#/g (#號為注釋符號,在shell中注釋符號為#,C++中為//)
:n1,n2/^/\/\//g C++源文件多行連續注釋
技巧4 替換
:ab string1 string2 在vim中輸入string1按空格或回車後,string1會自動替換為string2
:unab string1 取消string1的替換
vim配置文件
~/.vimrc
可將編輯模式下的命令寫在裡面,每個命令單獨一行,這樣每次啟動時,會自動執行裡面的命令。