vim 操作命令 by skywind3000

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改寫到行末 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刪除到行末 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復(fù)制當(dāng)前位置到本行結(jié)束的內(nèi)容 yy 復(fù)制當(dāng)前行 Y 復(fù)制當(dāng)前行梗夸,同 yy yiw 復(fù)制當(dāng)前單詞 3yy 復(fù)制光標(biāo)下三行內(nèi)容 v0 選中當(dāng)前位置到行首 v 選中當(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

vim: set ts=4 sw=4 tw=0 noet noautoindent fdm=manual :

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末聋袋,一起剝皮案震驚了整個濱河市队伟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌幽勒,老刑警劉巖缰泡,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異代嗤,居然都是意外死亡棘钞,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門干毅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宜猜,“玉大人,你說我怎么就攤上這事硝逢∫逃担” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵渠鸽,是天一觀的道長叫乌。 經(jīng)常有香客問我,道長徽缚,這世上最難降的妖魔是什么憨奸? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮凿试,結(jié)果婚禮上排宰,老公的妹妹穿的比我還像新娘。我一直安慰自己那婉,他們只是感情好板甘,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著详炬,像睡著了一般盐类。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天在跳,我揣著相機與錄音枪萄,去河邊找鬼。 笑死硬毕,一個胖子當(dāng)著我的面吹牛呻引,可吹牛的內(nèi)容都是我干的礼仗。 我是一名探鬼主播吐咳,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼元践!你這毒婦竟也來了韭脊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤单旁,失蹤者是張志新(化名)和其女友劉穎沪羔,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體象浑,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡蔫饰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了愉豺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片篓吁。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蚪拦,靈堂內(nèi)的尸體忽然破棺而出杖剪,到底是詐尸還是另有隱情,我是刑警寧澤驰贷,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布盛嘿,位于F島的核電站,受9級特大地震影響括袒,放射性物質(zhì)發(fā)生泄漏次兆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一锹锰、第九天 我趴在偏房一處隱蔽的房頂上張望类垦。 院中可真熱鬧,春花似錦城须、人聲如沸蚤认。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽砰琢。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間陪汽,已是汗流浹背训唱。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挚冤,地道東北人况增。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像训挡,于是被迫代替她去往敵國和親澳骤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 光標(biāo)移動 h 光標(biāo)左移澜薄,同 <Left> 鍵j ...
    guanguans閱讀 1,840評論 0 16
  • #########################################################...
    路峰閱讀 1,051評論 0 0
  • 1. 關(guān)于Vim vim是我最喜歡的編輯器为肮,也是linux下第二強大的編輯器。 雖然emacs是公認(rèn)的世界第一肤京,我...
    Dyworldhua閱讀 1,377評論 0 2
  • 自我總結(jié)篇: 對文件的操作技巧: vim文件一個有三種狀態(tài):命令(瀏覽/輸入命令轉(zhuǎn)變末行模式)颊艳,文本(添加/編輯/...
    小知大知閱讀 799評論 0 0
  • 遠(yuǎn)處的山峰暈染了黃昏的迷霧 通亮溫暖卻不自知 街道是卡車和汽車喧囂的味道 鳥兒在樹枝歡喜雀躍 嘰嘰喳喳叫個不停 那...
    阿七_dc68閱讀 111評論 0 2