VIM CHEATSHEET (中文速查表) by skywind3000
##############################################################################
VIM CHEATSHEET (中文速查表) - by skywind (created on 2017/10/12)
Version: 43, Last Modified: 2018/12/26 15:17
https://github.com/skywind3000/awesome-cheatsheets
##############################################################################
##############################################################################
光標(biāo)移動
##############################################################################
h 光標(biāo)左移厂财,同 <Left> 鍵
j 光標(biāo)下移惊暴,同 <Down> 鍵
k 光標(biāo)上移寥掐,同 <Up> 鍵
l 光標(biāo)右移晌畅,同 <Right> 鍵
CTRL-F 下一頁
CTRL-B 上一頁
CTRL-U 上移半屏
CTRL-D 下移半屏
0 跳到行首(是數(shù)字零宾肺,不是字母O),效用等同于 <Home> 鍵
^ 跳到從行首開始第一個非空白字符
$ 跳到行尾列敲,效用等同于 <End> 鍵
gg 跳到第一行母怜,效用等同于 CTRL+<Home>
G 跳到最后一行,效用等同于 CTRL+<End>
nG 跳到第n行善榛,比如 10G 是移動到第十行
:n 跳到第n行辩蛋,比如 :10<回車> 是移動到第十行
10% 移動到文件 10% 處
15| 移動到當(dāng)前行的 15列
w 跳到下一個單詞開頭 (word: 標(biāo)點或空格分隔的單詞)
W 跳到下一個單詞開頭 (WORD: 空格分隔的單詞)
e 跳到下一個單詞尾部 (word: 標(biāo)點或空格分隔的單詞)
E 跳到下一個單詞尾部 (WORD: 空格分隔的單詞)
b 上一個單詞頭 (word: 標(biāo)點或空格分隔的單詞)
B 上一個單詞頭 (WORD: 空格分隔的單詞)
ge 上一個單詞尾
) 向前移動一個句子(句號分隔)
( 向后移動一個句子(句號分隔)
} 向前移動一個段落(空行分隔)
{ 向后移動一個段落(空行分隔)
<enter> 移動到下一行首個非空字符
移動到下一行首個非空字符(同回車鍵)
移動到上一行首個非空字符
H 移動到屏幕上部
M 移動到屏幕中部
L 移動到屏幕下部
fx 跳轉(zhuǎn)到下一個為 x 的字符,2f/ 可以找到第二個斜桿
Fx 跳轉(zhuǎn)到上一個為 x 的字符
tx 跳轉(zhuǎn)到下一個為 x 的字符前
Tx 跳轉(zhuǎn)到上一個為 x 的字符前
; 跳到下一個 f/t 搜索的結(jié)果
, 跳到上一個 f/t 搜索的結(jié)果
<S-Left> 按住 SHIFT 按左鍵移盆,向左移動一個單詞
<S-Right> 按住 SHIFT 按右鍵悼院,向右移動一個單詞
<S-Up> 按住 SHIFT 按上鍵,向上翻頁
<S-Down> 按住 SHIFT 按下鍵咒循,向下翻頁
gm 移動到行中
gj 光標(biāo)下移一行(忽略自動換行)
gk 光標(biāo)上移一行(忽略自動換行)
##############################################################################
插入模式:進入退出
##############################################################################
i 在光標(biāo)處進入插入模式
I 在行首進入插入模式
a 在光標(biāo)后進入插入模式
A 在行尾進入插入模式
o 在下一行插入新行并進入插入模式
O 在上一行插入新行并進入插入模式
gi 進入到上一次插入模式的位置
<ESC> 退出插入模式
CTRL-[ 退出插入模式(同 ESC 等價据途,但更順手)
##############################################################################
INSERT MODE - 由 i, I, a, A, o, O 等命令進入插入模式后
##############################################################################
<Up> 光標(biāo)向上移動
<Down> 光標(biāo)向下移動
<Left> 光標(biāo)向左移動
<Right> 光標(biāo)向右移動
<S-Left> 按住 SHIFT 按左鍵,向左移動一個單詞
<S-Right> 按住 SHIFT 按右鍵叙甸,向右移動一個單詞
<S-Up> 按住 SHIFT 按上鍵昨凡,向上翻頁
<S-Down> 按住 SHIFT 按下鍵,向下翻頁
<PageUp> 上翻頁
<PageDown> 下翻頁
<Delete> 刪除光標(biāo)處字符
<BS> Backspace 向后刪除字符
<Home> 光標(biāo)跳轉(zhuǎn)行首
<End> 光標(biāo)跳轉(zhuǎn)行尾
CTRL-W 向后刪除單詞
CTRL-O 臨時退出插入模式蚁署,執(zhí)行單條命令又返回插入模式
CTRL-\ CTRL-O 臨時退出插入模式(光標(biāo)保持)便脊,執(zhí)行單條命令又返回插入模式
CTRL-R 0 插入寄存器(內(nèi)部 0號剪貼板)內(nèi)容,CTRL-R 后可跟寄存器名
CTRL-R " 插入匿名寄存器內(nèi)容光戈,相當(dāng)于插入模式下 p粘貼
CTRL-R = 插入表達式計算結(jié)果哪痰,等號后面跟表達式
CTRL-R : 插入上一次命令行命令
CTRL-R / 插入上一次搜索的關(guān)鍵字
CTRL-F 自動縮進
CTRL-U 刪除當(dāng)前行所有字符
CTRL-V {char} 插入非數(shù)字的字面量
CTRL-V {number} 插入三個數(shù)字代表的 ascii/unicode 字符
CTRL-V 065 插入 10進制 ascii 字符(兩數(shù)字) 065 即 A字符
CTRL-V x41 插入 16進制 ascii 字符(三數(shù)字) x41 即 A字符
CTRL-V o101 插入 8進制 ascii 字符(三數(shù)字) o101 即 A字符
CTRL-V u1234 插入 16進制 unicode 字符(四數(shù)字)
CTRL-V U12345678 插入 16進制 unicode 字符(八數(shù)字)
CTRL-K {ch1} {ch2} 插入 digraph(見 :h digraph),快速輸入日文或符號等
##############################################################################
文本編輯
##############################################################################
r 替換當(dāng)前字符
R 進入替換模式久妆,直至 ESC 離開
s 替換字符(刪除光標(biāo)處字符晌杰,并進入插入模式,前可接數(shù)量)
S 替換行(刪除當(dāng)前行筷弦,并進入插入模式肋演,前可接數(shù)量)
cc 改寫當(dāng)前行(刪除當(dāng)前行并進入插入模式),同 S
cw 改寫光標(biāo)開始處的當(dāng)前單詞
ciw 改寫光標(biāo)所處的單詞
caw 改寫光標(biāo)所處的單詞烂琴,并且包括前后空格(如果有的話)
c0 改寫到行首
c^ 改寫到行首(第一個非零字符)
c)
ci" 改寫雙引號中的內(nèi)容
ci' 改寫單引號中的內(nèi)容
cib 改寫小括號中的內(nèi)容
cab 改寫小括號中的內(nèi)容(包含小括號本身)
ci) 改寫小括號中的內(nèi)容
ci] 改寫中括號中內(nèi)容
ciB 改寫大括號中內(nèi)容
caB 改寫大括號中的內(nèi)容(包含大括號本身)
ci} 改寫大括號中內(nèi)容
cit 改寫 xml tag 中的內(nèi)容
cis 改寫當(dāng)前句子
c2w 改寫下兩個單詞
ct( 改寫到小括號前
x 刪除當(dāng)前字符爹殊,前面可以接數(shù)字,3x代表刪除三個字符
X 向前刪除字符
dd 刪除當(dāng)前行
d0 刪除到行首
d^ 刪除到行首(第一個非零字符)
d)
dw 刪除當(dāng)前單詞
diw 刪除光標(biāo)所處的單詞
daw 刪除光標(biāo)所處的單詞奸绷,并包含前后空格(如果有的話)
di" 刪除雙引號中的內(nèi)容
di' 刪除單引號中的內(nèi)容
dib 刪除小括號中的內(nèi)容
di) 刪除小括號中的內(nèi)容
dab 刪除小括號內(nèi)的內(nèi)容(包含小括號本身)
di] 刪除中括號中內(nèi)容
diB 刪除大括號中內(nèi)容
di} 刪除大括號中內(nèi)容
daB 刪除大括號內(nèi)的內(nèi)容(包含大括號本身)
dit 刪除 xml tag 中的內(nèi)容
dis 刪除當(dāng)前句子
d2w 刪除下兩個單詞
dt( 刪除到小括號前
dgg 刪除到文件頭部
dG 刪除到文件尾部
d} 刪除下一段
d{ 刪除上一段
u 撤銷
U 撤銷整行操作
CTRL-R 撤銷上一次 u 命令
J 鏈接多行為一行
. 重復(fù)上一次操作
~ 替換大小寫
g~iw 替換當(dāng)前單詞的大小寫
gUiw 將單詞轉(zhuǎn)成大寫
guiw 將當(dāng)前單詞轉(zhuǎn)成小寫
guu 全行轉(zhuǎn)為小寫
gUU 全行轉(zhuǎn)為大寫
<< 減少縮進
增加縮進
== 自動縮進
CTRL-A 增加數(shù)字
CTRL-X 減少數(shù)字
##############################################################################
復(fù)制粘貼
##############################################################################
p 粘貼到光標(biāo)后
P 粘貼到光標(biāo)前
v 開始標(biāo)記
y 復(fù)制標(biāo)記內(nèi)容
V 開始按行標(biāo)記
CTRL-V 開始列標(biāo)記
y 選中當(dāng)前位置到行末
viw 選中當(dāng)前單詞
vib 選中小括號內(nèi)的東西
vi) 選中小括號內(nèi)的東西
vi] 選中中括號內(nèi)的東西
viB 選中大括號內(nèi)的東西
vi} 選中大括號內(nèi)的東西
vis 選中句子中的東西
vab 選中小括號內(nèi)的東西(包含小括號本身)
va) 選中小括號內(nèi)的東西(包含小括號本身)
va] 選中中括號內(nèi)的東西(包含中括號本身)
vaB 選中大括號內(nèi)的東西(包含大括號本身)
va} 選中大括號內(nèi)的東西(包含大括號本身)
gv 重新選擇上一次選中的文字
:set paste 允許粘貼模式(避免粘貼時自動縮進影響格式)
:set nopaste 禁止粘貼模式
"?yy 復(fù)制當(dāng)前行到寄存器 ? ,問號代表 0-9 的寄存器名稱
"?d3j 刪除光標(biāo)下三行內(nèi)容号醉,并放到寄存器 ? 反症,問號代表 0-9 的寄存器名稱
"?p 將寄存器 ? 的內(nèi)容粘貼到光標(biāo)后
"?P 將寄存器 ? 的內(nèi)容粘貼到光標(biāo)前
:registers 顯示所有寄存器內(nèi)容
:[range]y 復(fù)制范圍辛块,比如 :20,30y 是復(fù)制20到30行,:10y 是復(fù)制第十行
:[range]d 刪除范圍铅碍,比如 :20,30d 是刪除20到30行润绵,:10d 是刪除第十行
ddp 交換兩行內(nèi)容:先刪除當(dāng)前行復(fù)制到寄存器,并粘貼
"_[command] 使用[command]刪除內(nèi)容胞谈,并且不進行復(fù)制(不會污染寄存器)
"*[command] 使用[command]復(fù)制內(nèi)容到系統(tǒng)剪貼板(需要vim版本有clipboard支持)
##############################################################################
文本對象 - c,d,v,y 等命令后接文本對象授药,一般為:<范圍 i/a><類型>
##############################################################################
$ 到行末
0 到行首
^ 到行首非空字符
tx 光標(biāo)位置到字符 x 之前
fx 光標(biāo)位置到字符 x 之處
iw 整個單詞(不包括分隔符)
aw 整個單詞(包括分隔符)
iW 整個 WORD(不包括分隔符)
aW 整個 WORD(包括分隔符)
is 整個句子(不包括分隔符)
ib 小括號內(nèi)
ab 小括號內(nèi)(包含小括號本身)
iB 大括號內(nèi)
aB 大括號內(nèi)(包含大括號本身)
i) 小括號內(nèi)
a) 小括號內(nèi)(包含小括號本身)
i] 中括號內(nèi)
a] 中括號內(nèi)(包含中括號本身)
i} 大括號內(nèi)
a} 大括號內(nèi)(包含大括號本身)
i' 單引號內(nèi)
a' 單引號內(nèi)(包含單引號本身)
i" 雙引號內(nèi)
a" 雙引號內(nèi)(包含雙引號本身)
2i) 往外兩層小括號內(nèi)
2a) 往外兩層小括號內(nèi)(包含小括號本身)
2f) 到第二個小括號處
2t) 到第二個小括號前
##############################################################################
查找替換
##############################################################################
/pattern 從光標(biāo)處向文件尾搜索 pattern
?pattern 從光標(biāo)處向文件頭搜索 pattern
n 向同一方向執(zhí)行上一次搜索
N 向相反方向執(zhí)行上一次搜索
向前搜索光標(biāo)下的單詞
向后搜索光標(biāo)下的單詞
:s/p1/p2/g 將當(dāng)前行中全替換p1為p2
:%s/p1/p2/g 將當(dāng)前文件中全替換p1為p2
:%s/p1/p2/gc 將當(dāng)前文件中全替換p1為p2,并且每處詢問你是否替換
:10,20s/p1/p2/g 將第10到20行中所有p1替換為p2
:%s/1\2/3/123/g 將“1\2/3” 替換為 “123”(特殊字符使用反斜杠標(biāo)注)
:%s/\r//g 刪除 DOS 換行符 ^M
##############################################################################
VISUAL MODE - 由 v, V, CTRL-V 進入的可視模式
##############################################################################
增加縮進
< 減少縮進
d 刪除高亮選中的文字
x 刪除高亮選中的文字
c 改寫文字呜魄,即刪除高亮選中的文字并進入插入模式
s 改寫文字悔叽,即刪除高亮選中的文字并進入插入模式
y 拷貝文字
~ 轉(zhuǎn)換大小寫
o 跳轉(zhuǎn)到標(biāo)記區(qū)的另外一端
O 跳轉(zhuǎn)到標(biāo)記塊的另外一端
u 標(biāo)記區(qū)轉(zhuǎn)換為小寫
U 標(biāo)記區(qū)轉(zhuǎn)換為大寫
g CTRL-G 顯示所選擇區(qū)域的統(tǒng)計信息
<Esc> 退出可視模式
##############################################################################
位置跳轉(zhuǎn)
##############################################################################
CTRL-O 跳轉(zhuǎn)到上一個位置
CTRL-I 跳轉(zhuǎn)到下一個位置
CTRL-^ 跳轉(zhuǎn)到 alternate file (當(dāng)前窗口的上一個文件)
% 跳轉(zhuǎn)到 {} () [] 的匹配
gd 跳轉(zhuǎn)到局部定義(光標(biāo)下的單詞的定義)
gD 跳轉(zhuǎn)到全局定義(光標(biāo)下的單詞的定義)
gf 打開名稱為光標(biāo)下文件名的文件
[[ 跳轉(zhuǎn)到上一個頂層函數(shù)(比如C語言以大括號分隔)
]] 跳轉(zhuǎn)到下一個頂層函數(shù)(比如C語言以大括號分隔)
[m 跳轉(zhuǎn)到上一個成員函數(shù)
]m 跳轉(zhuǎn)到下一個成員函數(shù)
[{ 跳轉(zhuǎn)到上一處未匹配的 {
]} 跳轉(zhuǎn)到下一處未匹配的 }
[( 跳轉(zhuǎn)到上一處未匹配的 (
]) 跳轉(zhuǎn)到下一處未匹配的 )
[c 上一個不同處(diff時)
]c 下一個不同處(diff時)
[/ 跳轉(zhuǎn)到 C注釋開頭
]/ 跳轉(zhuǎn)到 C注釋結(jié)尾
`` 回到上次跳轉(zhuǎn)的位置
'' 回到上次跳轉(zhuǎn)的位置
`. 回到上次編輯的位置
'. 回到上次編輯的位置
##############################################################################
文件操作
##############################################################################
:w 保存文件
:w <filename> 按名稱保存文件
:e <filename> 打開文件并編輯
:saveas <filename> 另存為文件
:r <filename> 讀取文件并將內(nèi)容插入到光標(biāo)后
:r !dir 將 dir 命令的輸出捕獲并插入到光標(biāo)后
:close 關(guān)閉文件
:q 退出
:q! 強制退出
:wa 保存所有文件
:cd <path> 切換 Vim 當(dāng)前路徑
:pwd 顯示 Vim 當(dāng)前路徑
:new 打開一個新的窗口編輯新文件
:enew 在當(dāng)前窗口創(chuàng)建新文件
:vnew 在左右切分的新窗口中編輯新文件
:tabnew 在新的標(biāo)簽頁中編輯新文件
##############################################################################
已打開文件操作
##############################################################################
:ls 查案緩存列表
:bn 切換到下一個緩存
:bp 切換到上一個緩存
:bd 刪除緩存
:b 1 切換到1號緩存
:b abc 切換到文件名為 abc 開頭的緩存
:badd <filename> 將文件添加到緩存列表
:set hidden 設(shè)置隱藏模式(未保存的緩存可以被切換走,或者關(guān)閉)
:set nohidden 關(guān)閉隱藏模式(未保存的緩存不能被切換走爵嗅,或者關(guān)閉)
n CTRL-^ 切換緩存娇澎,先輸入數(shù)字的緩存編號,再按 CTRL + 6
##############################################################################
窗口操作
##############################################################################
:sp <filename> 上下切分窗口并在新窗口打開文件 filename
:vs <filename> 左右切分窗口并在新窗口打開文件 filename
CTRL-W s 上下切分窗口
CTRL-W v 左右切分窗口
CTRL-W w 循環(huán)切換到下一個窗口
CTRL-W W 循環(huán)切換到上一個窗口
CTRL-W p 跳到上一個訪問過的窗口
CTRL-W c 關(guān)閉當(dāng)前窗口
CTRL-W o 關(guān)閉其他窗口
CTRL-W h 跳到左邊的窗口
CTRL-W j 跳到下邊的窗口
CTRL-W k 跳到上邊的窗口
CTRL-W l 跳到右邊的窗口
CTRL-W + 增加當(dāng)前窗口的行高睹晒,前面可以加數(shù)字
CTRL-W - 減少當(dāng)前窗口的行高趟庄,前面可以加數(shù)字
CTRL-W < 減少當(dāng)前窗口的列寬,前面可以加數(shù)字
CTRL-W > 增加當(dāng)前窗口的列寬伪很,前面可以加數(shù)字
CTRL-W = 讓所有窗口寬高相同
CTRL-W H 將當(dāng)前窗口移動到最左邊
CTRL-W J 將當(dāng)前窗口移動到最下邊
CTRL-W K 將當(dāng)前窗口移動到最上邊
CTRL-W L 將當(dāng)前窗口移動到最右邊
CTRL-W x 交換窗口
CTRL-W f 在新窗口中打開名為光標(biāo)下文件名的文件
CTRL-W gf 在新標(biāo)簽頁中打開名為光標(biāo)下文件名的文件
CTRL-W R 旋轉(zhuǎn)窗口
CTRL-W T 將當(dāng)前窗口移到新的標(biāo)簽頁中
CTRL-W P 跳轉(zhuǎn)到預(yù)覽窗口
CTRL-W z 關(guān)閉預(yù)覽窗口
CTRL-W _ 縱向最大化當(dāng)前窗口
CTRL-W | 橫向最大化當(dāng)前窗口
##############################################################################
標(biāo)簽頁
##############################################################################
:tabs 顯示所有標(biāo)簽頁
:tabe <filename> 在新標(biāo)簽頁中打開文件 filename
:tabn 下一個標(biāo)簽頁
:tabp 上一個標(biāo)簽頁
:tabc 關(guān)閉當(dāng)前標(biāo)簽頁
:tabo 關(guān)閉其他標(biāo)簽頁
:tabn n 切換到第n個標(biāo)簽頁戚啥,比如 :tabn 3 切換到第三個標(biāo)簽頁
:tabm n 標(biāo)簽移動
:tabfirst 切換到第一個標(biāo)簽頁
:tablast 切換到最后一個標(biāo)簽頁
:tab help 在標(biāo)簽頁打開幫助
:tab drop <file> 如果文件已被其他標(biāo)簽頁和窗口打開則跳過去,否則新標(biāo)簽打開
:tab split 在新的標(biāo)簽頁中打開當(dāng)前窗口里的文件
:tab ball 將緩存中所有文件用標(biāo)簽頁打開
:set showtabline=? 設(shè)置為 0 就不顯示標(biāo)簽頁標(biāo)簽锉试,1會按需顯示猫十,2會永久顯示
ngt 切換到第n個標(biāo)簽頁,比如 2gt 將會切換到第二個標(biāo)簽頁
gt 下一個標(biāo)簽頁
gT 上一個標(biāo)簽頁
##############################################################################
書簽
##############################################################################
:marks 顯示所有書簽
ma 保存當(dāng)前位置到書簽 a 呆盖,書簽名小寫字母為文件內(nèi)拖云,大寫全局
'a 跳轉(zhuǎn)到書簽 a所在的行
a 跳轉(zhuǎn)到書簽 a所在位置
. 跳轉(zhuǎn)到上一次編輯的行
'A 跳轉(zhuǎn)到全文書簽 A
[' 跳轉(zhuǎn)到上一個書簽
]' 跳轉(zhuǎn)到下一個書簽
'< 跳到上次可視模式選擇區(qū)域的開始
'> 跳到上次可視模式選擇區(qū)域的結(jié)束
##############################################################################
常用設(shè)置
##############################################################################
:set nocompatible 設(shè)置不兼容原始 vi 模式(必須設(shè)置在最開頭)
:set bs=? 設(shè)置BS鍵模式,現(xiàn)代編輯器為 :set bs=eol,start,indent
:set sw=4 設(shè)置縮進寬度為 4
:set ts=4 設(shè)置制表符寬度為 4
:set noet 設(shè)置不展開 tab 成空格
:set et 設(shè)置展開 tab 成空格
:set winaltkeys=no 設(shè)置 GVim 下正常捕獲 ALT 鍵
:set nowrap 關(guān)閉自動換行
:set ttimeout 允許終端按鍵檢測超時(終端下功能鍵為一串ESC開頭的掃描碼)
:set ttm=100 設(shè)置終端按鍵檢測超時為100毫秒
:set term=? 設(shè)置終端類型应又,比如常見的 xterm
:set ignorecase 設(shè)置搜索是否忽略大小寫
:set smartcase 智能大小寫宙项,默認(rèn)忽略大小寫,除非搜索內(nèi)容里包含大寫字母
:set list 設(shè)置顯示制表符和換行符
:set number 設(shè)置顯示行號株扛,禁止顯示行號可以用 :set nonumber
:set relativenumber 設(shè)置顯示相對行號(其他行與當(dāng)前行的距離)
:set paste 進入粘貼模式(粘貼時禁用縮進等影響格式的東西)
:set nopaste 結(jié)束粘貼模式
:set spell 允許拼寫檢查
:set hlsearch 設(shè)置高亮查找
:set ruler 總是顯示光標(biāo)位置
:set incsearch 查找輸入時動態(tài)增量顯示查找結(jié)果
:set insertmode Vim 始終處于插入模式下尤筐,使用 ctrl-o 臨時執(zhí)行命令
:set all 列出所有選項設(shè)置情況
:syntax on 允許語法高亮
:syntax off 禁止語法高亮
##############################################################################
幫助信息
##############################################################################
:h tutor 入門文檔
:h quickref 快速幫助
:h index 查詢 Vim 所有鍵盤命令定義
:h summary 幫助你更好的使用內(nèi)置幫助系統(tǒng)
:h CTRL-H 查詢普通模式下 CTRL-H 是干什么的
:h i_CTRL-H 查詢插入模式下 CTRL-H 是干什么的
:h i_<Up> 查詢插入模式下方向鍵上是干什么的
:h pattern.txt 正則表達式幫助
:h eval 腳本編寫幫助
:h function-list 查看 VimScript 的函數(shù)列表
:h windows.txt 窗口使用幫助
:h tabpage.txt 標(biāo)簽頁使用幫助
:h +timers 顯示對 +timers 特性的幫助
:h :! 查看如何運行外部命令
:h tips 查看 Vim 內(nèi)置的常用技巧文檔
:h set-termcap 查看如何設(shè)置按鍵掃描碼
:viusage NORMAL 模式幫助
:exusage EX 命令幫助
:version 顯示當(dāng)前 Vim 的版本號和特性
##############################################################################
外部命令
##############################################################################
:!ls 運行外部命令 ls,并等待返回
:r !ls 將外部命令 ls 的輸出捕獲洞就,并插入到光標(biāo)后
:w !sudo tee % sudo以后保存當(dāng)前文件
:call system('ls') 調(diào)用 ls 命令盆繁,但是不顯示返回內(nèi)容
:!start notepad Windows 下啟動 notepad,最前面可以加 silent
:sil !start cmd Windows 下當(dāng)前目錄打開 cmd
:%!prog 運行文字過濾程序奖磁,如整理 json格式 :%!python -m json.tool
##############################################################################
Quickfix 窗口
##############################################################################
:copen 打開 quickfix 窗口(查看編譯改基,grep等信息)
:copen 10 打開 quickfix 窗口繁疤,并且設(shè)置高度為 10
:cclose 關(guān)閉 quickfix 窗口
:cfirst 跳到 quickfix 中第一個錯誤信息
:clast 跳到 quickfix 中最后一條錯誤信息
:cc [nr] 查看錯誤 [nr]
:cnext 跳到 quickfix 中下一個錯誤信息
:cprev 跳到 quickfix 中上一個錯誤信息
##############################################################################
拼寫檢查
##############################################################################
:set spell 打開拼寫檢查
:set nospell 關(guān)閉拼寫檢查
]s 下一處錯誤拼寫的單詞
[s 上一處錯誤拼寫的單詞
zg 加入單詞到拼寫詞表中
zug 撤銷上一次加入的單詞
z= 拼寫建議
##############################################################################
代碼折疊
##############################################################################
za 切換折疊
zA 遞歸切換折疊
zc 折疊光標(biāo)下代碼
zC 折疊光標(biāo)下所有代碼
zd 刪除光標(biāo)下折疊
zD 遞歸刪除所有折疊
zE 刪除所有折疊
zf 創(chuàng)建代碼折疊
zF 指定行數(shù)創(chuàng)建折疊
zi 切換折疊
zm 所有代碼折疊一層
zr 所有代碼打開一層
zM 折疊所有代碼咖为,設(shè)置 foldlevel=0秕狰,設(shè)置 foldenable
zR 打開所有代碼,設(shè)置 foldlevel 為最大值
zn 折疊 none躁染,重置 foldenable 并打開所有代碼
zN 折疊 normal鸣哀,重置 foldenable 并恢復(fù)所有折疊
zo 打開一層代碼
zO 打開光標(biāo)下所有代碼折疊
##############################################################################
宏錄制
##############################################################################
qa 開始錄制名字為 a 的宏
q 結(jié)束錄制宏
@a 播放名字為 a 的宏
@@ 播放上一個宏
@: 重復(fù)上一個ex命令(即冒號命令)
##############################################################################
其他命令
##############################################################################
CTRL-X CTRL-F 插入模式下文件路徑補全
CTRL-X CTRL-O 插入下 Omnifunc 補全
CTRL-X CTRL-N 插入模式下關(guān)鍵字補全
CTRL-X CTRL-E 插入模式下向上滾屏
CTRL-X CTRL-Y 插入模式下向下滾屏
CTRL-E 向上滾屏
CTRL-Y 向下滾屏
CTRL-G 顯示正在編輯的文件名,以及大小和位置信息
g CTRL-G 顯示文件的:大小吞彤,字符數(shù)我衬,單詞數(shù)和行數(shù),可視模式下也可用
zz 調(diào)整光標(biāo)所在行到屏幕中央
zt 調(diào)整光標(biāo)所在行到屏幕上部
zb 調(diào)整光標(biāo)所在行到屏幕下部
ga 顯示光標(biāo)下字符的 ascii 碼或者 unicode 編碼
g8 顯示光標(biāo)下字符的 utf-8 編碼字節(jié)序
gi 回到上次進入插入的地方饰恕,并切換到插入模式
K 查詢光標(biāo)下單詞的幫助
ZZ 保存文件(如果有改動的話)挠羔,并關(guān)閉窗口
ZQ 不保存文件關(guān)閉窗口
CTRL-PgUp 上個標(biāo)簽頁,GVim OK埋嵌,部分終端軟件需設(shè)置對應(yīng)鍵盤碼
CTRL-PgDown 下個標(biāo)簽頁破加,GVim OK,部分終端軟件需設(shè)置對應(yīng)鍵盤碼
CTRL-R CTRL-W 命令模式下插入光標(biāo)下單詞
CTRL-INSERT 復(fù)制到系統(tǒng)剪貼板(GVIM)
SHIFT-INSERT 粘貼系統(tǒng)剪貼板的內(nèi)容(GVIM)
:set ff=unix 設(shè)置換行為 unix
:set ff=dos 設(shè)置換行為 dos
:set ff? 查看換行設(shè)置
:set nohl 清除搜索高亮
:set termcap 查看會從終端接收什么以及會發(fā)送給終端什么命令
:set guicursor= 解決 SecureCRT/PenguiNet 中 NeoVim 局部奇怪字符問題
:set t_RS= t_SH= 解決 SecureCRT/PenguiNet 中 Vim8.0 終端功能奇怪字符
:set fo+=a 開啟文本段的實時自動格式化
:earlier 15m 回退到15分鐘前的文件內(nèi)容
:.!date 在當(dāng)前窗口插入時間
:%!xxd 開始二進制編輯
:%!xxd -r 保存二進制編輯
:r !curl -sL {URL} 讀取 url 內(nèi)容添加到光標(biāo)后
:g/^\s$/d 刪除空行
:g/green/d 刪除所有包含 green 的行
:v/green/d 刪除所有不包含 green 的行
:g/gladiolli/# 搜索單詞打印結(jié)果雹嗦,并在結(jié)果前加上行號
:g/ab.cd.*efg/# 搜索包含 ab,cd 和 efg 的行范舀,打印結(jié)果以及行號
:v/./,/./-j 壓縮空行
:Man bash 在 Vim 中查看 man,先調(diào)用 :runtime! ftplugin/man.vim 激活
/fred|joe 搜索 fred 或者 joe
/<\d\d\d\d> 精確搜索四個數(shù)字
/^\n{3} 搜索連續(xù)三個空行
##############################################################################
Plugin - https://github.com/tpope/vim-commentary
##############################################################################
gcc 注釋當(dāng)前行
gc{motion} 注釋 {motion} 所標(biāo)注的區(qū)域了罪,比如 gcap 注釋整段
gci{ 注釋大括號內(nèi)的內(nèi)容
gc 在 Visual Mode 下面按 gc 注釋選中區(qū)域
:7,17Commentary 注釋 7 到 17 行
##############################################################################
Plugin - https://github.com/junegunn/vim-easy-align
##############################################################################
:EasyAlign = 以第一個匹配的=為中心對齊
:EasyAlign *= 匹配并且對齊所有=
##############################################################################
Plugin - https://github.com/tpope/vim-unimpaired
##############################################################################
[space 向上插入空行
]space 向下插入空行
[e 替換當(dāng)前行和上一行
]e 替換當(dāng)前行和下一行
[x XML 編碼
]x XML 解碼
[u URL 編碼
]u URL 解碼
[y C 字符串編碼
]y C 字符串解碼
[q 上一個 quickfix 錯誤
]q 下一個 quickfix 錯誤
[Q 第一個 quickfix 錯誤
]Q 最后一個 quickfix 錯誤
[f 切換同目錄里上一個文件
]f 切換同目錄里下一個文件
[os 設(shè)置 :set spell
]os 設(shè)置 :set nospell
=os 設(shè)置 :set invspell
[on 顯示行號
]on 關(guān)閉行號
[ol 顯示回車和制表符 :set list
]ol 不顯示回車和制表符 :set nolist
[b 緩存切換到上一個文件锭环,即 :bp
]b 緩存切換到下一個文件,即 :bn
[B 緩存切換到第一個文件泊藕,即 :bfirst
]B 緩存切換到最后一個文件辅辩,即 :blast
##############################################################################
Plugin - https://github.com/skywind3000/asyncrun.vim
##############################################################################
:AsyncRun ls 異步運行命令 ls 結(jié)果輸出到 quickfix 使用 :copen 查看
:AsyncRun -raw ls 異步運行命令 ls 結(jié)果不匹配 errorformat
##############################################################################
Plugin - https://github.com/gaving/vim-textobj-argument
##############################################################################
cia 改寫函數(shù)參數(shù)
caa 改寫函數(shù)參數(shù)(包括逗號分隔)
dia 刪除函數(shù)參數(shù)
daa 刪除函數(shù)參數(shù)(包括逗號分隔)
via 選取函數(shù)參數(shù)
vaa 選取函數(shù)參數(shù)(包括逗號分隔)
yia 復(fù)制函數(shù)參數(shù)
yaa 復(fù)制函數(shù)參數(shù)(包括逗號分隔)
##############################################################################
網(wǎng)絡(luò)資源
##############################################################################
最新版本 https://github.com/vim/vim
Windows 最新版 https://github.com/vim/vim-win32-installer/releases
插件瀏覽 http://vimawesome.com
reddit https://www.reddit.com/r/vim/
正確設(shè)置 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://www.skywind.me/blog/archives/2193
腳本精通 http://learnvimscriptthehardway.stevelosh.com/
中文腳本幫助 vimcdoc.sourceforge.net/doc/eval.html
十六年使用經(jīng)驗 http://zzapper.co.uk/vimtips.html
配色方案 http://vimcolors.com/
##############################################################################
TIPS
##############################################################################
- 永遠(yuǎn)不要用 CTRL-C 代替 <ESC> 完全不同的含義,容易錯誤中斷運行的后臺腳本
- 很多人使用 CTRL-[ 代替 <ESC>娃圆,左手小指 CTRL汽久,右手小指 [ 熟練后很方便
- 某些終端中使用 Vim 8 內(nèi)嵌終端如看到奇怪字符,使用 :set t_RS= t_SH= 解決
- 某些終端中使用 NeoVim 如看到奇怪字符踊餐,使用 :set guicursor= 解決
- 多使用 ciw, ci[, ci", ci( 以及 diw, di[, di", di( 命令來快速改寫/刪除文本
- 在行內(nèi)左右移動光標(biāo)時景醇,多使用w b e或W B E,而不是h l或方向鍵吝岭,這樣會快很多
- SHIFT 相當(dāng)于移動加速鍵三痰, w b e 移動光標(biāo)很慢,但是 W B E 走的很快
- 自己要善于總結(jié)新技巧窜管,比如移動到行首非空字符時用 0w 命令比 ^ 命令更容易輸入
- 在空白行使用 dip 命令可以刪除所有臨近的空白行散劫,viw 可以選擇連續(xù)空白
- 縮進時使用 >8j >} <ap >ap =i} == 會方便很多
- 插入模式下,當(dāng)你發(fā)現(xiàn)一個單詞寫錯了幕帆,應(yīng)該多用 CTRL-W 這比 <BackSpace> 快
- y d c 命令可以很好結(jié)合 f t 和 /X 比如 dt) 和 y/end<cr>
- c d x 命令會自動填充寄存器 "1 到 "9 , y 命令會自動填充 "0 寄存器
- 用 v 命令選擇文本時获搏,可以用 o 掉頭選擇,有時很有用
- 寫文章時失乾,可以寫一段代碼塊常熙,然后選中后執(zhí)行 :!python 代碼塊就會被替換成結(jié)果
- 搜索后經(jīng)常使用 :nohl 來消除高亮纬乍,使用很頻繁,可以 map 到 <BackSpace> 上
- 搜索時可以用 CTRL-R CTRL-W 插入光標(biāo)下的單詞裸卫,命令模式也能這么用
- 映射按鍵時仿贬,應(yīng)該默認(rèn)使用 noremap ,只有特別需要的時候使用 map
- 當(dāng)你覺得做某事很低效時墓贿,你應(yīng)該停下來茧泪,u u u u 然后思考正確的高效方式來完成
- 用 y復(fù)制文本后,命令模式中 CTRL-R 然后按雙引號 0 可以插入之前復(fù)制內(nèi)容
- Windows 下的 GVim 可以設(shè)置 set rop=type:directx,renmode:5 增強顯示
##############################################################################
References
##############################################################################
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