---
# System prepended metadata

title: vim不同模式下的快速鍵

---

# vim不同模式下的快速鍵
[toc]

## 光標移動move
:::success
h 光標左移 同 Left 鍵
j 光標下移 同 Down 鍵
k 光標上移 同 Up 鍵
l 光標右移 同 Right 鍵
CTRLF 下一頁
CTRLB 上一頁
CTRLU 上移半屏
CTRLD 下移半屏
0 跳到行首是數字零 不是字母O 效用等同于 Home 鍵
^ 跳到從行首開始第一個非空白字符
$ 跳到行尾 效用等同于 End 鍵
gg 跳到第一行 效用等同于 CTRLHome
G 跳到最後一行 效用等同于 CTRLEnd
nG 跳到第n行 比如 10G 是移動到第十行
 n 跳到第n行 比如  10回車 是移動到第十行
10% 移動到文件 10% 處
15| 移動到當前行的 15列
w 跳到下一個單詞開頭 word  標點或空格分隔的單詞
W 跳到下一個單詞開頭 WORD  空格分隔的單詞
e 跳到下一個單詞尾部 word  標點或空格分隔的單詞
E 跳到下一個單詞尾部 WORD  空格分隔的單詞
b 上一個單詞頭 word  標點或空格分隔的單詞
B 上一個單詞頭 WORD  空格分隔的單詞
ge 上一個單詞尾
 向前移動一個句子句號分隔
 向後移動一個句子句號分隔
} 向前移動一個段落空行分隔
{ 向後移動一個段落空行分隔
enter 移動到下一行首個非空字符
移動到下一行首個非空字符同回車鍵
移動到上一行首個非空字符
H 移動到屏幕上部
M 移動到屏幕中部
L 移動到屏幕下部
fx 跳轉到下一個爲 x 的字符 2f 可以找到第二個斜杆
Fx 跳轉到上一個爲 x 的字符
tx 跳轉到下一個爲 x 的字符前
Tx 跳轉到上一個爲 x 的字符前
  跳到下一個 ft 搜索的結果
  跳到上一個 ft 搜索的結果
SLeft 按住 SHIFT 按左鍵 向左移動一個單詞
SRight 按住 SHIFT 按右鍵 向右移動一個單詞
SUp 按住 SHIFT 按上鍵 向上翻頁
SDown 按住 SHIFT 按下鍵 向下翻頁
gm 移動到行中
gj 光標下移一行忽略自動換行
gk 光標上移一行忽略自動換行
:::
## 插入模式 進入退出
:::success
i 在光標處進入插入模式
I 在行首進入插入模式
a 在光標後進入插入模式
A 在行尾進入插入模式
o 在下一行插入新行并進入插入模式
O 在上一行插入新行并進入插入模式
gi 進入到上一次插入模式的位置
ESC 退出插入模式
CTRL 退出插入模式同 ESC 等價 但更順手
:::
## 插入模式後 Ctrl-O
:::success
When in insert mode, Ctrl-o will allow you to perform a single normal mode operation.Note that a single operation does not always mean a single key. “j”, “dd”, and “:w!” are some examples where each counts as a single operation, and can be done from Ctrl-o.You can read more in vim’s help system: :help i_CTRL-O.
:::

## 由i I a A o O 等命令進入插入模式後的編輯模式
:::success
Up 光標向上移動
Down 光標向下移動
Left 光標向左移動
Right 光標向右移動
SLeft 按住 SHIFT 按左鍵 向左移動一個單詞
SRight 按住 SHIFT 按右鍵 向右移動一個單詞
SUp 按住 SHIFT 按上鍵 向上翻頁
SDown 按住 SHIFT 按下鍵 向下翻頁
PageUp 上翻頁
PageDown 下翻頁
Delete 刪除光標處字符
BS Backspace 向後刪除字符
Home 光標跳轉行首
End 光標跳轉行尾
CTRLW 向後刪除單詞
CTRLO 臨時退出插入模式 執行單條命令又返回插入模式
CTRL\ CTRLO 臨時退出插入模式光標保持 執行單條命令又返回插入模式
CTRLR 0 插入寄存器內部 0號剪貼板內容 CTRLR 後可跟寄存器名
CTRLR " 插入匿名寄存器內容 相當于插入模式下 p粘貼
CTRLR = 插入表達式計算結果 等號後面跟表達式
CTRLR :  插入上一次命令行命令
CTRLR / 插入上一次搜索的關鍵字
CTRLF 自動縮進
CTRLU 刪除當前行所有字符
CTRLV {char} 插入非數字的字面量
CTRLV {number} 插入三個數字代表的 asciiunicode 字符
CTRLV 065 插入 10進制 ascii 字符兩數字 065 即 A字符
CTRLV x41 插入 16進制 ascii 字符三數字 x41 即 A字符
CTRLV o101 插入 8進制 ascii 字符三數字 o101 即 A字符
CTRLV u1234 插入 16進制 unicode 字符四數字
CTRLV U12345678 插入 16進制 unicode 字符八數字
CTRLK {ch1} {ch2} 插入 digraph見  h digraph 快速輸入日文或符號等
:::

## 文本編輯
:::success
r 替換當前字符
R 進入替換模式 直至 ESC 離開
s 替換字符刪除光標處字符 并進入插入模式 前可接數量
S 替換行刪除當前行 并進入插入模式 前可接數量
cc 改寫當前行刪除當前行并進入插入模式 同 S
cw 改寫光標開始處的當前單詞
ciw 改寫光標所處的單詞
caw 改寫光標所處的單詞 并且包括前後空格如果有的話
c0 改寫到行首
c^ 改寫到行首第一個非零字符
c$ 改寫到行末
ci" 改寫雙引號中的內容
ci' 改寫單引號中的內容
ci( 改寫小括號中的內容
ci[ 改寫中括號中內容
ci} 改寫大括號中內容
cit 改寫 xml tag 中的內容
cis 改寫當前句子
c2w 改寫下兩個單詞
ct( 改寫到小括號前
x 刪除當前字符 前面可以接數字 3x代表刪除三個字符
X 向前刪除字符
dd 刪除當前行
d0 刪除到行首
d^ 刪除到行首第一個非零字符
d$ 刪除到行末
D 刪除到行末同 d$
dw 刪除當前單詞
diw 刪除光標所處的單詞
daw 刪除光標所處的單詞 并包含前後空格如果有的話
di" 刪除雙引號中的內容
di' 刪除單引號中的內容
di 刪除小括號中的內容
di 刪除中括號中內容
di} 刪除大括號中內容
dit 刪除 xml tag 中的內容
dis 刪除當前句子
d2w 刪除下兩個單詞
dt 刪除到小括號前
dgg 刪除到文件頭部
dG 刪除到文件尾部
d} 刪除下一段
d{ 刪除上一段
u 撤銷
U 撤銷整行操作
CTRLR 撤銷上一次 u 命令
J 鏈接多行爲一行
 重復上一次操作
~ 替換大小寫
g~iw 替換當前單詞的大小寫
gUiw 將單詞轉成大寫
guiw 將當前單詞轉成小寫
guu 全行轉爲小寫
gUU 全行轉爲大寫
減少縮進
增加縮進
== 自動縮進
CTRLA 增加數字
CTRLX 減少數字
復制粘貼
p 粘貼到光標後
P 粘貼到光標前
v 開始標記
y 復制標記內容
V 開始按行標記
CTRLV 開始列標記
y$ 復制當前位置到本行結束的內容
yy 復制當前行
Y 復制當前行 同 yy
yiw 復制當前單詞
3yy 復制光標下三行內容
v0 選中當前位置到行首
v$ 選中當前位置到行末
viw 選中當前單詞
vi 選中小括號內的東西
vi 選中中括號內的東西
vis 選中句子中的東西
gv 重新選擇上一次選中的文字
set paste 設置粘貼模式避免粘貼時自動縮進影響格式
set nopaste 光比刪除模式
"?yy 復制當前行到寄存器 ?  問號代表 09 的寄存器名稱
"?p 將寄存器 ? 的內容粘貼到光標後
"?P 將寄存器 ? 的內容粘貼到光標前
registers 顯示所有寄存器內容
rangey 復制範圍 比如  20 30y 是復制20到30行  10y 是復制第十行
ranged 刪除範圍 比如  20 30d 是刪除20到30行  10d 是刪除第十行
ddp 交換兩行內容 先刪除當前行復制到寄存器 并粘貼
文本對象  c d v y 等命令後接文本對象 一般爲 範圍 ia類型
$ 到行末
0 到行首
^ 到行首非空字符
tx 光標位置到字符 x 之前
fx 光標位置到字符 x 之處
iw 整個單詞不包括分隔符
aw 整個單詞包括分隔符
iW 整個 WORD不包括分隔符
aW 整個 WORD包括分隔符
is 整個句子不包括分隔符
i 小括號內
a 小括號內包含小括號本身
i 中括號內
a 中括號內包含中括號本身
i} 大括號內
a} 大括號內包含大括號本身
i' 單引號內
a' 單引號內包含單引號本身
i" 雙引號內
a" 雙引號內包含雙引號本身
:::
## 查找替換
:::success
pattern 從光標處向文件尾搜索 pattern
?pattern 從光標處向文件頭搜索 pattern
n 向同一方向執行上一次搜索
N 向相反方向執行上一次搜索
向前搜索光標下的單詞
向後搜索光標下的單詞
 sp1p2g 將當前行中全替換p1爲p2
 %sp1p2g 將當前文件中全替換p1爲p2
 %sp1p2gc 將當前文件中全替換p1爲p2 并且每處詢問你是否替換
 10 20sp1p2g 將第10到20行中所有p1替換爲p2
 %s1\23123g 將1\23 替換爲 123特殊字符使用反斜杠標注
 %s\rg 刪除 DOS 換行符 ^M
:::

## VISUAL MODE  由 v  V  CTRLV 進入的可視模式
:::success
增加縮進
減少縮進
d 刪除高亮選中的文字
x 刪除高亮選中的文字
c 改寫文字 即刪除高亮選中的文字并進入插入模式
s 改寫文字 即刪除高亮選中的文字并進入插入模式
y 拷貝文字
~ 轉換大小寫
o 跳轉到標記區的另外一端
O 跳轉到標記塊的另外一端
u 標記區轉換爲小寫
U 標記區轉換爲大寫
g CTRLG 顯示所選擇區域的統計信息
Esc 退出可視模式
位置跳轉
CTRLO 跳轉到上一個位置
CTRLI 跳轉到下一個位置
CTRL^ 跳轉到 alternate file 當前窗口的上一個文件
% 跳轉到 {}   的匹配
gd 跳轉到局部定義光標下的單詞的定義
gD 跳轉到全局定義光標下的單詞的定義
gf 打開名稱爲光標下文件名的文件
 跳轉到上一個頂層函數比如C語言以大括號分隔
 跳轉到下一個頂層函數比如C語言以大括號分隔
m 跳轉到上一個成員函數
m 跳轉到下一個成員函數
{ 跳轉到上一處未匹配的 {
} 跳轉到下一處未匹配的 }
 跳轉到上一處未匹配的 
 跳轉到下一處未匹配的 
c 上一個不同處diff時
c 下一個不同處diff時
 跳轉到 C注釋開頭
 跳轉到 C注釋結尾
:::
## 文件操作
:::success
 w 保存文件
 w filename 按名稱保存文件
 e filename 打開文件并編輯
 saveas filename 另存爲文件
 r filename 讀取文件并將內容插入到光標後
 r dir 將 dir 命令的輸出捕獲并插入到光標後
 close 關閉文件
 q 退出
 q 強制退出
 wa 保存所有文件
 cd path 切換 Vim 當前路徑
 pwd 顯示 Vim 當前路徑
 new 打開一個新的窗口編輯新文件
 enew 在當前窗口創建新文件
 vnew 在左右切分的新窗口中編輯新文件
 tabnew 在新的標簽頁中編輯新文件
:::

## 緩存操作
:::success
 ls 查案緩存列表
 bn 切換到下一個緩存
 bp 切換到上一個緩存
 bd 刪除緩存
 b 1 切換到1號緩存
 b abc 切換到文件名爲 abc 開頭的緩存
 badd filename 將文件添加到緩存列表
 set hidden 設置隱藏模式未保存的緩存可以被切換走 或者關閉
 set nohidden 關閉隱藏模式未保存的緩存不能被切換走 或者關閉
n CTRL^ 切換緩存 先輸入數字的緩存編號 再按 CTRL  6
:::
## 窗口操作
:::success
 sp filename 上下切分窗口并在新窗口打開文件 filename
 vs filename 左右切分窗口并在新窗口打開文件 filename
CTRLW s 上下切分窗口
CTRLW v 左右切分窗口
CTRLW w 循環切換到下一個窗口
CTRLW W 循環切換到上一個窗口
CTRLW p 跳到上一個訪問過的窗口
CTRLW c 關閉當前窗口
CTRLW o 關閉其他窗口
CTRLW h 跳到左邊的窗口
CTRLW j 跳到下邊的窗口
CTRLW k 跳到上邊的窗口
CTRLW l 跳到右邊的窗口
CTRLW  增加當前窗口的行高 前面可以加數字
CTRLW  減少當前窗口的行高 前面可以加數字
CTRLW  減少當前窗口的列寬 前面可以加數字
CTRLW  增加當前窗口的列寬 前面可以加數字
CTRLW = 讓所有窗口寬高相同
CTRLW H 將當前窗口移動到最左邊
CTRLW J 將當前窗口移動到最下邊
CTRLW K 將當前窗口移動到最上邊
CTRLW L 將當前窗口移動到最右邊
CTRLW x 交換窗口
CTRLW f 在新窗口中打開名爲光標下文件名的文件
CTRLW gf 在新標簽頁中打開名爲光標下文件名的文件
CTRLW R 旋轉窗口
CTRLW T 將當前窗口移到新的標簽頁中
CTRLW P 跳轉到預覽窗口
CTRLW z 關閉預覽窗口
CTRLW _ 縱向最大化當前窗口
CTRLW | 橫向最大化當前窗口
:::
## 標簽頁
:::success
 tabs 顯示所有標簽頁
 tabe filename 在新標簽頁中打開文件 filename
 tabn 下一個標簽頁
 tabp 上一個標簽頁
 tabc 關閉當前標簽頁
 tabo 關閉其他標簽頁
 tabn n 切換到第n個標簽頁 比如  tabn 3 切換到第三個標簽頁
 tabm n 標簽移動
 tabfirst 切換到第一個標簽頁
 tablast 切換到最後一個標簽頁
 tab help 在標簽頁打開幫助
 tab drop file 如果文件已被其他標簽頁和窗口打開則跳過去 否則新標簽打開
 tab split 在新的標簽頁中打開當前窗口裏的文件
 tab ball 將緩存中所有文件用標簽頁打開
ngt 切換到第n個標簽頁 比如 2gt 將會切換到第二個標簽頁
gt 下一個標簽頁
gT 上一個標簽頁
:::
## 書簽
:::success
marks 顯示所有書簽
ma 保存當前位置到書簽 a  書簽名可以用 az作用範圍爲文件內部  AZ作用範圍爲所有文件 26*2個字母
'a 跳轉到書簽 a所在的行
a 跳轉到書簽 a所在位置 跳轉到上一次編輯的行
'A 跳轉到全文書簽 A
' 跳轉到上一個書簽
' 跳轉到下一個書簽
' 跳到上次可視模式選擇區域的開始
' 跳到上次可視模式選擇區域的結束
常用設置
 set nocompatible 設置不兼容原始 vi 模式必須設置在最開頭
 set bs=? 設置BS鍵模式 現代編輯器爲  set bs=eol start indent
 set sw=4 設置縮進寬度爲 4
 set ts=4 設置制表符寬度爲 4
 set noet 設置不展開 tab 成空格
 set et 設置展開 tab 成空格
 set winaltkeys=no 設置 GVim 下正常捕獲 ALT 鍵
 set nowrap 關閉自動換行
 set ttimeout 允許終端按鍵檢測超時終端下功能鍵爲一串ESC開頭的掃描碼
 set ttm=100 設置終端按鍵檢測超時爲100毫秒
 set term=? 設置終端類型 比如常見的 xterm
 set ignorecase 設置搜索是否忽略大小寫
 set smartcase 智能大小寫 默認忽略大小寫 除非搜索內容裏包含大寫字母
 set list 設置顯示制表符和換行符
 set number 設置顯示行號 禁止顯示行號可以用  set nonumber
 set paste 進入粘貼模式粘貼時禁用縮進等影響格式的東西
 set nopaste 結束粘貼模式
 set spell 允許拼寫檢查
 set hlsearch 設置高亮查找
 set ruler 總是顯示光標位置
 set incsearch 查找輸入時動態增量顯示查找結果
 set insertmode Vim 始終處于插入模式下 使用 ctrlo 臨時執行命令
 set all 列出所有選項設置情況
 syntax on 允許語法高亮
 syntax off 禁止語法高亮
:::

## 幫助信息
:::success
 h tutor 入門文檔
 h quickref 快速幫助
 h index 查詢 Vim 所有鍵盤命令定義
 h summary 幫助你更好的使用內置幫助系統
 h CTRLH 查詢普通模式下 CTRLH 是幹什麼的
 h i_CTRLH 查詢插入模式下 CTRLH 是幹什麼的
 h i_Up 查詢插入模式下方向鍵上是幹什麼的
 h patterntxt 正則表達式幫助
 h eval 腳本編寫幫助
 h functionlist 查看 VimScript 的函數列表
 h windowstxt 窗口使用幫助
 h tabpagetxt 標簽頁使用幫助
 h timers 顯示對 timers 特性的幫助
 h   查看如何運行外部命令
 h tips 查看 Vim 內置的常用技巧文檔
 h settermcap 查看如何設置按鍵掃描碼
 viusage NORMAL 模式幫助
 exusage EX 命令幫助
 version 顯示當前 Vim 的版本號和特性
:::
## 外部命令
:::success
 ls 運行外部命令 ls 并等待返回
 r ls 將外部命令 ls 的輸出捕獲 并插入到光標後
 w sudo tee % sudo以後保存當前文件
 call system'ls' 調用 ls 命令 但是不顯示返回內容
 start notepad Windows 下啓動 notepad 最前面可以加 silent
 sil start cmd Windows 下當前目錄打開 cmd
 %prog 運行文字過濾程序 如整理 json格式  %python m jsontool
Quickfix 窗口
 copen 打開 quickfix 窗口查看編譯 grep等信息
 copen 10 打開 quickfix 窗口 并且設置高度爲 10
 cclose 關閉 quickfix 窗口
 cfirst 跳到 quickfix 中第一個錯誤信息
 clast 跳到 quickfix 中最後一條錯誤信息
 cc nr 查看錯誤 nr
 cnext 跳到 quickfix 中下一個錯誤信息
 cprev 跳到 quickfix 中上一個錯誤信息
:::
## 拼寫檢查
:::success
 set spell 打開拼寫檢查
 set nospell 關閉拼寫檢查
s 下一處錯誤拼寫的單詞
s 上一處錯誤拼寫的單詞
zg 加入單詞到拼寫詞表中
zug 撤銷上一次加入的單詞
z= 拼寫建議
代碼折叠
za 切換折叠
zA 遞歸切換折叠
zc 折叠光標下代碼
zC 折叠光標下所有代碼
zd 刪除光標下折叠
zD 遞歸刪除所有折叠
zE 刪除所有折叠
zf 創建代碼折叠
zF 指定行數創建折叠
zi 切換折叠
zm 所有代碼折叠一層
zr 所有代碼打開一層
zM 折叠所有代碼 設置 foldlevel=0 設置 foldenable
zR 打開所有代碼 設置 foldlevel 爲最大值
zn 折叠 none 重置 foldenable 并打開所有代碼
zN 折叠 normal 重置 foldenable 并恢復所有折叠
zo 打開一層代碼
zO 打開光標下所有代碼折叠
:::
## 宏錄制
:::success
qa 開始錄制名字爲 a 的宏
q 結束錄制宏
@a 播放名字爲 a 的宏
@  播放上一個宏
:::
## 其他命令
:::success
CTRLE 向上卷屏
CTRLY 向下卷屏
CTRLG 顯示正在編輯的文件名 以及大小和位置信息
g CTRLG 顯示文件的 大小 字符數 單詞數和行數 可視模式下也可用
zz 調整光標所在行到屏幕中央
zt 調整光標所在行到屏幕上部
zb 調整光標所在行到屏幕下部
ga 顯示光標下字符的 ascii 碼或者 unicode 編碼
g8 顯示光標下字符的 utf8 編碼字節序
gi 回到上次進入插入的地方 并切換到插入模式
K 查詢光標下單詞的幫助
ZZ 保存文件如果有改動的話 并關閉窗口
CTRLPgUp 上個標簽頁 GVim OK 部分終端軟件需設置對應鍵盤碼
CTRLPgDown 下個標簽頁 GVim OK 部分終端軟件需設置對應鍵盤碼
CTRLR CTRLW 命令模式下插入光標下單詞
CTRLINSERT 復制到系統剪貼板GVIM
SHIFTINSERT 粘貼系統剪貼板的內容GVIM
 set ff=unix 設置換行爲 unix
 set ff=dos 設置換行爲 dos
 set ff? 查看換行設置
 set nohl 清除搜索高亮
 set termcap 查看會從終端接收什麼以及會發送給終端什麼命令
 set guicursor= 解決 SecureCRTPenguiNet 中 NeoVim 局部奇怪字符問題
 set t_RS= t_SH= 解決 SecureCRTPenguiNet 中 Vim80 終端功能奇怪字符
 set fo=a 開啓文本段的實時自動格式化
 earlier 15m 回退到15分鍾前的文件內容
 date 在當前窗口插入時間
 %xxd 開始二進制編輯
 %xxd r 保存二進制編輯
 r curl sL {URL} 讀取 url 內容添加到光標後
 g^\s$d 刪除空行
 ggreend 刪除所有包含 green 的行
 vgreend 刪除所有不包含 green 的行
 ggladiolli##### 搜索單詞打印結果 并在結果前加上行號
 gabcd*efg##### 搜索包含 ab cd 和 efg 的行 打印結果以及行號
 v j 壓縮空行
 Man bash 在 Vim 中查看 man 先調用  runtime ftpluginmanvim 激活
fred|joe 搜索 fred 或者 joe
\d\d\d\d 精确搜索四個數字
^\n{3} 搜索連續三個空行
Plugin - https://github.com/tpope/vim-commentary
gcc 注釋當前行
gc{motion} 注釋 {motion} 所標注的區域 比如 gcap 注釋整段
gci{ 注釋大括號內的內容
gc 在 Visual Mode 下面按 gc 注釋選中區域
 7 17Commentary 注釋 7 到 17 行
Plugin - https://github.com/godlygeek/tabular
 Tabularize   按逗號對齊
 Tabularize = 按等于號對齊
 Tabularize | 按豎線對齊
 Tabularize |r0 按豎線靠右對齊
Plugin - https://github.com/tpope/vim-unimpaired
space 向上插入空行
space 向下插入空行
e 替換當前行和上一行
e 替換當前行和下一行
x XML 編碼
x XML 解碼
u URL 編碼
u URL 解碼
y C 字符串編碼
y C 字符串解碼
q 上一個 quickfix 錯誤
q 下一個 quickfix 錯誤
Q 第一個 quickfix 錯誤
Q 最後一個 quickfix 錯誤
f 切換同目錄裏上一個文件
f 切換同目錄裏下一個文件
os 設置  set spell
os 設置  set nospell
=os 設置  set invspell
on 顯示行號
on 關閉行號
ol 顯示回車和制表符  set list
ol 不顯示回車和制表符  set nolist
b 緩存切換到上一個文件 即  bp
b 緩存切換到下一個文件 即  bn
B 緩存切換到第一個文件 即  bfirst
B 緩存切換到最後一個文件 即  blast
Plugin - https://github.com/skywind3000/asyncrun.vim
 AsyncRun ls 異步運行命令 ls 結果輸出到 quickfix 使用  copen 查看
 AsyncRun raw ls 異步運行命令 ls 結果不匹配 errorformat
Plugin - https://github.com/vim-scripts/argtextobj.vim
cia 改寫函數參數
caa 改寫函數參數包括逗號分隔
dia 刪除函數參數
daa 刪除函數參數包括逗號分隔
via 選取函數參數
vaa 選取函數參數包括逗號分隔
yia 復制函數參數
yaa 復制函數參數包括逗號分隔
:::
## 網絡資源
:::success
最新版本 https://github.com/vim/vim
Windows 最新版 https://github.com/vim/vim-win32-installer/releases
插件浏覽 http://vimawesome.com
reddit https://www.reddit.com/r/vim/
正确設置 ALT/BS 鍵 http://www.skywind.me/blog/archives/2021
視頻教程 http://vimcasts.org/
中文幫助 http://vimcdoc.sourceforge.net/doc/help.html
中文版入門到精通 https://github.com/wsdjeg/vim-galore-zh_cn
五分鍾腳本入門 http://andrewscala.com/vimscript/
腳本精通 http://learnvimscriptthehardway.stevelosh.com/
中文腳本幫助 vimcdocsourceforgenetdocevalhtml
十六年使用經驗 http://zzapper.co.uk/vimtips.html
TIPS
永遠不要用 CTRLC 代替 ESC 完全不同的含義 容易錯誤中斷運行的後台腳本
很多人使用 CTRL 代替 ESC 左手小指 CTRL 右手小指  熟練後很方便
SecureCRT 中使用 Vim 8 內嵌終端如看到奇怪字符 使用  set t_RS= t_SH= 解決
SecureCRT 中使用 NeoVim 如看到奇怪字符 使用  set guicursor= 解決
多使用 ciw  ci  ci"  ci 以及 diw  di  di"  di 命令來快速改寫刪除文本
SHIFT 相當于移動加速鍵  w b e 移動光標很慢 但是 W B E 走的很快
自己要善于總結新技巧 比如移動到行首非空字符時用 0w 命令比 ^ 命令更容易輸入
在空白行使用 dip 命令可以刪除所有臨近的空白行 viw 可以選擇連續空白
縮進時使用 8j } ap ap =i} == 會方便很多
插入模式下 當你發現一個單詞寫錯了 應該多用 CTRLW 這比 BackSpace 快
y d c 命令可以很好結合 f t 和 X 比如 dt 和 yendcr
c d x 命令會自動填充寄存器 "1 到 "9   y 命令會自動填充 "0 寄存器
用 v 命令選擇文本時 可以用 o 掉頭選擇 有時很有用
寫文章時 可以寫一段代碼塊 然後選中後執行  python 代碼塊就會被替換成結果
搜索後經常使用  nohl 來消除高亮 使用很頻繁 可以 map 到 BackSpace 上
搜索時可以用 CTRLR CTRLW 插入光標下的單詞 命令模式也能這麼用
映射按鍵時 應該默認使用 noremap  只有特別需要的時候使用 map
當你覺得做某事很低效時 你應該停下來 u u u u 然後思考正确的高效方式來完成
用 y復制文本後 命令模式中 CTRLR 然後按雙引號 0 可以插入之前復制內容
Windows 下的 GVim 可以設置 set rop=type directx renmode 5 增強顯示
:::
## References
:::success
* https://github.com/groenewege/vimrc/blob/master/vim_cheat_sheet.txt
* http://blog.g-design.net/post/4789778607/vim-cheat-sheet
* http://www.keyxl.com/aaa8263/290/VIM-keyboard-shortcuts.htm
* http://jmcpherson.org/editing.html
* http://www.fprintf.net/vimCheatSheet.html
* http://www.ouyaoxiazai.com/article/24/654.html
* http://bbs.it-home.org/thread-80794-1-1.html
* http://www.lpfrx.com/wp-content/uploads/2008/09/vi.jpg
* http://michael.peopleofhonoronly.com/vim/
* https://github.com/hobbestigrou/vimtips-fortune/blob/master/fortunes/vimtips
* https://github.com/glts/vim-cottidie/blob/master/autoload/cottidie/tips
* vim  set ts=4 sw=4 tw=0 noet noautoindent fdm=manual 原文鏈接
* https://github.com/skywind3000/awesome-cheatsheets/blob/master/editors/vim.txt，by skywind3000
:::