<leader> ----> ,
<leader>n 打開/關閉代碼資源管理器
<leader>t 打開/關閉函數列表
<leader>w 單詞跳轉
<leader>f 搜索~目錄下的文件
<leader>F 搜索當前目錄下的文本
<leader>g 顯示git倉庫提交記錄
<leader>G 顯示當前文件提交記錄
<leader>gg 顯示當前文件在某個commit下的完整內容
<leader>ff 語法錯誤自動修復(FixIt)
<c-p> 切換到上一個buffer
<c-n> 切換到下一個buffer
<leader>d 刪除當前buffer
<leader>D 刪除當前buffer外的所有buffer
vim 運行vim編輯器時,默認啟動開始頁面
<F5> 顯示語法錯誤提示窗口
<F7> 啟用markdown實時預覽
<F8> 關閉markdown實時預覽
<F9> 顯示上一主題
<F10> 顯示下一主題
<leader>l 按豎線對齊
<leader>= 按等號對齊
Ya 復制行文本到字母a
Da 剪切行文本到字母a
Ca 改寫行文本到字母a
rr 替換文本
<leader>r 全局替換,目前只支持單個文件
gcc 注釋代碼
gcap 注釋段落
vif 選中函數內容
dif 刪除函數內容
cif 改寫函數內容
vaf 選中函數內容(包括函數名 花括號)
daf 刪除函數內容(包括函數名 花括號)
caf 改寫函數內容(包括函數名 花括號)
fa 查找字母a,然后再按f鍵查找下一個
<c-x><c-o> Emoji🐶補全
插入模式
快捷鍵 說明
i 在光標處進入插入模式
I 在行首進入插入模式
a 在光標后進入插入模式
A 在行尾進入插入模式
o 在下一行插入新行並進入插入模式
O 在上一行插入新行並進入插入模式
gi 進入到上一次插入模式的位置
<esc> 退出插入模式
緩存操作
快捷鍵 說明
:e <filename> 新建buffer打開文件
:bp 切換到上一個buffer
:bn 切換到下一個buffer
:bd 刪除當前buffer
窗口操作
快捷鍵 說明
:sp <filename> 橫向切分窗口並打開文件
:vsp <filename> 豎向切分窗口並打開文件
<c-w>h 跳到左邊的窗口
<c-w>j 跳到下邊的窗口
<c-w>k 跳到上邊的窗口
<c-w>l 跳到右邊的窗口
<c-w>c 關閉當前窗口
<c-w>o 關閉其他窗口
:only 關閉其他窗口
光標移動
快捷鍵 說明
h 上下左右移動
j 上下左右移動
k 上下左右移動
l 上下左右移動
0 光標移動到行首
^ 跳到從行首開始第一個非空白字符
$ 光標移動到行尾
<c-o> 跳到上一個位置
<c-i> 跳到下一個位置
<c-b> 上一頁
<c-f> 下一頁
<c-u> 上移半屏
<c-d> 下移半屏
H 調到屏幕頂上
M 調到屏幕中間
L 調到屏幕下方
:n 跳到第n行
w 跳到下一個單詞開頭(標點或空格分隔的單詞)
W 跳到下一個單詞開頭(空格分隔的單詞)
e 跳到下一個單詞尾部(標點或空格分隔的單詞)
E 跳到下一個單詞尾部(空格分隔的單詞)
b 上一個單詞頭(標點或空格分隔的單詞)
B 上一個單詞頭(空格分隔的單詞)
ge 上一個單詞尾
% 在配對符間移動, 可用於()、{}、[]
gg 到文件首
G 到文件尾
fx 跳轉到下一個為x的字符
Fx 跳轉到上一個為x的字符
tx 跳轉到下一個為x的字符前
Tx 跳轉到上一個為x的字符前
; 跳到下一個搜索的結果
[[ 跳轉到函數開頭
]] 跳轉到函數結尾
文本編輯
快捷鍵 說明
r 替換當前字符
R 進入替換模式,直至 ESC 離開
s 替換字符(刪除光標處字符,並進入插入模式,前可接數量)
S 替換行(刪除當前行,並進入插入模式,前可接數量)
cc 改寫當前行(刪除當前行並進入插入模式),同 S
cw 改寫光標開始處的當前單詞
ciw 改寫光標所處的單詞
caw 改寫光標所處的單詞,並且包括前后空格(如果有的話)
ct, 改寫到逗號
c0 改寫到行首
c^ 改寫到行首(第一個非零字符)
c$ 改寫到行末
C 改寫到行末(同 c$)
ci" 改寫雙引號中的內容
ci' 改寫單引號中的內容
ci) 改寫小括號中的內容
ci] 改寫中括號中內容
ci} 改寫大括號中內容
cit 改寫 xml tag 中的內容
cis 改寫當前句子
ciB 改寫'{}'中的內容
c2w 改寫下兩個單詞
ct( 改寫到小括號前
x 刪除當前字符,前面可以接數字,3x代表刪除三個字符
X 向前刪除字符
dd 刪除當前行
d0 刪除到行首
d^ 刪除到行首(第一個非零字符)
d$ 刪除到行末
D 刪除到行末(同 d$)
dw 刪除當前單詞
dt, 刪除到逗號
diw 刪除光標所處的單詞
daw 刪除光標所處的單詞,並包含前后空格(如果有的話)
di" 刪除雙引號中的內容
di' 刪除單引號中的內容
di) 刪除小括號中的內容
di] 刪除中括號中內容
di} 刪除大括號中內容
diB 刪除'{}'中的內容
dit 刪除 xml tag 中的內容
dis 刪除當前句子
d2w 刪除下兩個單詞
dt( 刪除到小括號前
dgg 刪除到文件頭部
dG 刪除到文件尾部
d} 刪除下一段
d{ 刪除上一段
u 撤銷
U 撤銷整行操作
CTRL-R 撤銷上一次 u 命令
J 連接若干行
gJ 連接若干行,刪除空白字符
. 重復上一次操作
~ 交換大小寫
g~iw 替換當前單詞的大小寫
gUiw 將單詞轉成大寫
guiw 將當前單詞轉成小寫
guu 全行轉為小寫
gUU 全行轉為大寫
gg=G 縮進整個文件
=a{ 縮進光標所在代碼塊
=i{ 縮進光標所在代碼塊,不縮進"{"
<< 減少縮進
>> 增加縮進
== 自動縮進
CTRL-A 增加數字
CTRL-X 減少數字
p 粘貼到光標后
P 粘貼到光標前
v 開始標記
y 復制標記內容
V 開始按行標記
CTRL-V 開始列標記
y$ 復制當前位置到本行結束的內容
yy 復制當前行
Y 復制當前行,同 yy
yt, 復制到逗號
yiw 復制當前單詞
3yy 復制光標下三行內容
v0 選中當前位置到行首
v$ 選中當前位置到行末
vt, 選中到逗號
viw 選中當前單詞
vi) 選中小括號內的東西
vi] 選中中括號內的東西
viB 選中'{}'中的內容
vis 選中句子中的東西
gv 重新選擇上一次選中的文字
:set paste 允許粘貼模式(避免粘貼時自動縮進影響格式)
:set nopaste 禁止粘貼模式
"?yy 復制當前行到寄存器 ? ,問號代表 0-9 的寄存器名稱
"?p 將寄存器 ? 的內容粘貼到光標后
"?P 將寄存器 ? 的內容粘貼到光標前
:registers 顯示所有寄存器內容
:[range]y 復制范圍,比如 :20,30y 是復制20到30行,:10y 是復制第十行
:[range]d 刪除范圍,比如 :20,30d 是刪除20到30行,:10d 是刪除第十行
ddp 交換兩行內容:先刪除當前行復制到寄存器,並粘貼
文件操作
快捷鍵 說明
:w 保存文件
:w <filename> 按名稱保存文件
ZZ 保存文件(如果有改動的話),並關閉窗口
:e <filename> 打開文件並編輯
:saveas <filename> 另存為文件
:r <filename> 讀取文件並將內容插入到光標后
:r !dir 將dir命令的輸出捕獲並插入到光標后
:close 關閉文件
:q 退出
:q! 強制退出
:wa 保存所有文件
:cd <path> 切換Vim當前路徑
:new 打開一個新的窗口編輯新文件
:enew 在當前窗口創建新文件
:vnew 在左右切分的新窗口中編輯新文件
:tabnew 在新的標簽頁中編輯新文件
使用外部程序
快捷鍵 說明
! 告訴vim正在執行一個過濾操作
!5Gsort<Enter> 使用外部sort命令對1-5行文本排序
!! 對當前行執行過濾命令
!!date<Enter> 用"date"的輸出代替當前行
宏錄制
快捷鍵 說明
qa 開始錄制名字為a的宏
q 結束錄制宏
@a 播放名字為a的宏
100@a 播放名字為a的宏100次
:normal@a 播放名字為a的宏直到自動結束
實用命令
快捷鍵 說明
/pattern 從光標處向文件尾搜索 pattern
?pattern 從光標處向文件頭搜索 pattern
n 向同一方向執行上一次搜索
N 向相反方向執行上一次搜索
* 向前搜索光標下的單詞
# 向后搜索光標下的單詞
:s/p1/p2/g 替換當前行的p1為p2
:%s/p1/p2/g 替換當前文件中的p1為p2
:%s/<p1>/p2/g 替換當前文件中的p1單詞為p2
:%s/p1/p2/gc 替換當前文件中的p1為p2,並且每處詢問你是否替換
:10,20s/p1/p2/g 將第10到20行中所有p1替換為p2
:%s/1\\2\/3/123/g 將“1\2/3” 替換為 “123”(特殊字符使用反斜杠標注)
:%s/\r//g 刪除 DOS 換行符 ^M
:g/^\s*$/d 刪除空行
:g/test/d 刪除所有包含 test 的行
:v/test/d 刪除所有不包含 test 的行
:%s/^/test/ 在行首加入特定字符(也可以用宏錄制來添加)
:%s/$/test/ 在行尾加入特定字符(也可以用宏錄制來添加)
:sort 排序
:g/^\(.\+\)$\n\1/d 去除重復行(先排序)
:%s/^.\{10\}// 刪除每行前10個字符
:%s/.\{10\}$// 刪除每行尾10個字符
幫助
快捷鍵 說明
h tutor 入門文檔
h quickref 快速幫助
h index 查詢Vim所有鍵盤命令定義
h summary 幫助你更好的使用內置幫助系統
h pattern.txt 正則表達式幫助
h eval 腳本編寫幫助
h function-list 查看VimScript的函數列表
h windows.txt 窗口使用幫助
h tabpage.txt 標簽頁使用幫助
h tips 查看Vim內置的常用技巧文檔
h quote 寄存器
h autocommand-events 所有可能事件
h write-plugin 編寫插件
其他
快捷鍵 說明
vim -u NONE -N 開啟vim時不加載vimrc文件
vimdiff file1 file2 顯示文件差異
<leader>e 快速編輯vimrc文件
<leader>s 重新加載vimrc文件
<leader>h 打開vimplus幫助文檔
<leader>H 打開當前光標所在單詞的vim幫助文檔
<leader><leader>i 安裝插件
<leader><leader>u 更新插件
<leader><leader>c 刪除插件