Vimplus 快捷鍵

Stephen_X_x發表於2019-04-01

外掛相關

快捷鍵 說明
, Leader Key
<leader>n 開啟/關閉程式碼資源管理器
<leader>t 開啟/關閉函式列表
<leader>a .h .cpp 檔案切換
<leader>u 轉到函式宣告
<leader>U 轉到函式實現
<leader>o 開啟include檔案
<leader>y 複製函式宣告
<leader>p 生成函式實現
<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:dog:補全

插入模式

快捷鍵 說明
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 刪除外掛
本作品採用《CC 協議》,轉載必須註明作者和本文連結