VIM 中文速查表

光標移動

h 光標左移,同 <Left> 鍵
j 光標下移,同 <Down> 鍵
k 光標上移,同 <Up> 鍵
l 光標右移,同 <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| 移動到當前行的 15列
w 跳到下一個單詞開頭 (word: 標點或空格分隔的單詞)
W 跳到下一個單詞開頭 (WORD: 空格分隔的單詞)
e 跳到下一個單詞尾部 (word: 標點或空格分隔的單詞)
E 跳到下一個單詞尾部 (WORD: 空格分隔的單詞)
b 上一個單詞頭 (word: 標點或空格分隔的單詞)
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 光標下移一行(忽略自動換行)
gk 光標上移一行(忽略自動換行)

插入模式:進入退出

i 在光標處進入插入模式
I 在行首進入插入模式
a 在光標后進入插入模式
A 在行尾進入插入模式
o 在下一行插入新行并進入插入模式
O 在上一行插入新行并進入插入模式
gi 進入到上一次插入模式的位置
<ESC> 退出插入模式
CTRL-[ 退出插入模式(同 ESC 等價,但更順手)

INSERT MODE - 由 i, I, a, A, o, O 等命令進入插入模式后

<Up> 光標向上移動
<Down> 光標向下移動
<Left> 光標向左移動
<Right> 光標向右移動
<S-Left> 按住 SHIFT 按左鍵,向左移動一個單詞
<S-Right> 按住 SHIFT 按右鍵,向右移動一個單詞
<S-Up> 按住 SHIFT 按上鍵,向上翻頁
<S-Down> 按住 SHIFT 按下鍵,向下翻頁
<PageUp> 上翻頁
<PageDown> 下翻頁
<Delete> 刪除光標處字符
<BS> Backspace 向后刪除字符
<Home> 光標跳轉(zhuǎn)行首
<End> 光標跳轉(zhuǎn)行尾
CTRL-W 向后刪除單詞
CTRL-O 臨時退出插入模式,執(zhí)行單條命令又返回插入模式
CTRL-\ CTRL-O 臨時退出插入模式(光標保持),執(zhí)行單條命令又返回插入模式
CTRL-R 0 插入寄存器(內(nèi)部 0號剪貼板)內(nèi)容,CTRL-R 后可跟寄存器名
CTRL-R " 插入匿名寄存器內(nèi)容,相當于插入模式下 p粘貼
CTRL-R = 插入表達式計算結(jié)果,等號后面跟表達式
CTRL-R : 插入上一次命令行命令
CTRL-R / 插入上一次搜索的關(guān)鍵字
CTRL-F 自動縮進
CTRL-U 刪除當前行所有字符
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 替換當前字符
R 進入替換模式,直至 ESC 離開
s 替換字符(刪除光標處字符,并進入插入模式,前可接數(shù)量)
S 替換行(刪除當前行,并進入插入模式,前可接數(shù)量)
cc 改寫當前行(刪除當前行并進入插入模式),同 S
cw 改寫光標開始處的當前單詞
ciw 改寫光標所處的單詞
caw 改寫光標所處的單詞,并且包括前后空格(如果有的話)
c0 改寫到行首
c^ 改寫到行首(第一個非零字符)
c$ 改寫到行末
ci" 改寫雙引號中的內(nèi)容
ci' 改寫單引號中的內(nèi)容
ci) 改寫小括號中的內(nèi)容
ci] 改寫中括號中內(nèi)容
ci} 改寫大括號中內(nèi)容
cit 改寫 xml tag 中的內(nèi)容
cis 改寫當前句子
c2w 改寫下兩個單詞
ct( 改寫到小括號前
x 刪除當前字符,前面可以接數(shù)字,3x代表刪除三個字符
X 向前刪除字符
dd 刪除當前行
d0 刪除到行首
d^ 刪除到行首(第一個非零字符)
d$ 刪除到行末
D 刪除到行末(同 d$)
dw 刪除當前單詞
diw 刪除光標所處的單詞
daw 刪除光標所處的單詞,并包含前后空格(如果有的話)
di" 刪除雙引號中的內(nèi)容
di' 刪除單引號中的內(nèi)容
di) 刪除小括號中的內(nèi)容
di] 刪除中括號中內(nèi)容
di} 刪除大括號中內(nèi)容
dit 刪除 xml tag 中的內(nèi)容
dis 刪除當前句子
d2w 刪除下兩個單詞
dt( 刪除到小括號前
dgg 刪除到文件頭部
dG 刪除到文件尾部
d} 刪除下一段
d{ 刪除上一段
u 撤銷
U 撤銷整行操作
CTRL-R 撤銷上一次 u 命令
J 鏈接多行為一行
. 重復上一次操作
~ 替換大小寫
g~iw 替換當前單詞的大小寫
gUiw 將單詞轉(zhuǎn)成大寫
guiw 將當前單詞轉(zhuǎn)成小寫
guu 全行轉(zhuǎn)為小寫
gUU 全行轉(zhuǎn)為大寫
<< 減少縮進

             增加縮進

== 自動縮進
CTRL-A 增加數(shù)字
CTRL-X 減少數(shù)字

復制粘貼

p 粘貼到光標后
P 粘貼到光標前
v 開始標記
y 復制標記內(nèi)容
V 開始按行標記
CTRL-V 開始列標記
y$ 復制當前位置到本行結(jié)束的內(nèi)容
yy 復制當前行
Y 復制當前行,同 yy
yiw 復制當前單詞
3yy 復制光標下三行內(nèi)容
v0 選中當前位置到行首
v$ 選中當前位置到行末
viw 選中當前單詞
vi) 選中小括號內(nèi)的東西
vi] 選中中括號內(nèi)的東西
vis 選中句子中的東西
gv 重新選擇上一次選中的文字
:set paste 設(shè)置粘貼模式(避免粘貼時自動縮進影響格式)
:set nopaste 光比刪除模式
"?yy 復制當前行到寄存器 ? ,問號代表 0-9 的寄存器名稱
"?p 將寄存器 ? 的內(nèi)容粘貼到光標后
"?P 將寄存器 ? 的內(nèi)容粘貼到光標前
:registers 顯示所有寄存器內(nèi)容
:[range]y 復制范圍,比如 :20,30y 是復制20到30行,:10y 是復制第十行
:[range]d 刪除范圍,比如 :20,30d 是刪除20到30行,:10d 是刪除第十行
ddp 交換兩行內(nèi)容:先刪除當前行復制到寄存器,并粘貼

文本對象 - c,d,v,y 等命令后接文本對象,一般為:<范圍 i/a><類型>

$ 到行末
0 到行首
^ 到行首非空字符
tx 光標位置到字符 x 之前
fx 光標位置到字符 x 之處
iw 整個單詞(不包括分隔符)
aw 整個單詞(包括分隔符)
iW 整個 WORD(不包括分隔符)
aW 整個 WORD(包括分隔符)
is 整個句子(不包括分隔符)
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)(包含雙引號本身)

查找替換

/pattern 從光標處向文件尾搜索 pattern
?pattern 從光標處向文件頭搜索 pattern
n 向同一方向執(zhí)行上一次搜索
N 向相反方向執(zhí)行上一次搜索

  •               向前搜索光標下的單詞
    
向后搜索光標下的單詞

: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

VISUAL MODE - 由 v, V, CTRL-V 進入的可視模式

              增加縮進

< 減少縮進
d 刪除高亮選中的文字
x 刪除高亮選中的文字
c 改寫文字,即刪除高亮選中的文字并進入插入模式
s 改寫文字,即刪除高亮選中的文字并進入插入模式
y 拷貝文字
~ 轉(zhuǎn)換大小寫
o 跳轉(zhuǎn)到標記區(qū)的另外一端
O 跳轉(zhuǎn)到標記塊的另外一端
u 標記區(qū)轉(zhuǎn)換為小寫
U 標記區(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 (當前窗口的上一個文件)
% 跳轉(zhuǎn)到 {} () [] 的匹配
gd 跳轉(zhuǎn)到局部定義(光標下的單詞的定義)
gD 跳轉(zhuǎn)到全局定義(光標下的單詞的定義)
gf 打開名稱為光標下文件名的文件
[[ 跳轉(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é)尾

文件操作

:w 保存文件
:w <filename> 按名稱保存文件
:e <filename> 打開文件并編輯
:saveas <filename> 另存為文件
:r <filename> 讀取文件并將內(nèi)容插入到光標后
:r !dir 將 dir 命令的輸出捕獲并插入到光標后
:close 關(guān)閉文件
:q 退出
:q! 強制退出
:wa 保存所有文件
:cd <path> 切換 Vim 當前路徑
:pwd 顯示 Vim 當前路徑
:new 打開一個新的窗口編輯新文件
:enew 在當前窗口創(chuàng)建新文件
:vnew 在左右切分的新窗口中編輯新文件
:tabnew 在新的標簽頁中編輯新文件

緩存操作

: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)閉當前窗口
CTRL-W o 關(guān)閉其他窗口
CTRL-W h 跳到左邊的窗口
CTRL-W j 跳到下邊的窗口
CTRL-W k 跳到上邊的窗口
CTRL-W l 跳到右邊的窗口
CTRL-W + 增加當前窗口的行高,前面可以加數(shù)字
CTRL-W - 減少當前窗口的行高,前面可以加數(shù)字
CTRL-W < 減少當前窗口的列寬,前面可以加數(shù)字
CTRL-W > 增加當前窗口的列寬,前面可以加數(shù)字
CTRL-W = 讓所有窗口寬高相同
CTRL-W H 將當前窗口移動到最左邊
CTRL-W J 將當前窗口移動到最下邊
CTRL-W K 將當前窗口移動到最上邊
CTRL-W L 將當前窗口移動到最右邊
CTRL-W x 交換窗口
CTRL-W f 在新窗口中打開名為光標下文件名的文件
CTRL-W gf 在新標簽頁中打開名為光標下文件名的文件
CTRL-W R 旋轉(zhuǎn)窗口
CTRL-W T 將當前窗口移到新的標簽頁中
CTRL-W P 跳轉(zhuǎn)到預覽窗口
CTRL-W z 關(guān)閉預覽窗口
CTRL-W _ 縱向最大化當前窗口
CTRL-W | 橫向最大化當前窗口

標簽頁

:tabs 顯示所有標簽頁
:tabe <filename> 在新標簽頁中打開文件 filename
:tabn 下一個標簽頁
:tabp 上一個標簽頁
:tabc 關(guān)閉當前標簽頁
:tabo 關(guān)閉其他標簽頁
:tabn n 切換到第n個標簽頁,比如 :tabn 3 切換到第三個標簽頁
:tabm n 標簽移動
:tabfirst 切換到第一個標簽頁
:tablast 切換到最后一個標簽頁
:tab help 在標簽頁打開幫助
:tab drop <file> 如果文件已被其他標簽頁和窗口打開則跳過去,否則新標簽打開
:tab split 在新的標簽頁中打開當前窗口里的文件
:tab ball 將緩存中所有文件用標簽頁打開
ngt 切換到第n個標簽頁,比如 2gt 將會切換到第二個標簽頁
gt 下一個標簽頁
gT 上一個標簽頁

書簽

:marks 顯示所有書簽
ma 保存當前位置到書簽 a ,書簽名可以用 a-z(作用范圍為文件內(nèi)部), A-Z(作用范圍為所有文件) 26*2個字母
'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 智能大小寫,默認忽略大小寫,除非搜索內(nèi)容里包含大寫字母
:set list 設(shè)置顯示制表符和換行符
:set number 設(shè)置顯示行號,禁止顯示行號可以用 :set nonumber
:set paste 進入粘貼模式(粘貼時禁用縮進等影響格式的東西)
:set nopaste 結(jié)束粘貼模式
:set spell 允許拼寫檢查
:set hlsearch 設(shè)置高亮查找
:set ruler 總是顯示光標位置
: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 標簽頁使用幫助
:h +timers 顯示對 +timers 特性的幫助
:h :! 查看如何運行外部命令
:h tips 查看 Vim 內(nèi)置的常用技巧文檔
:h set-termcap 查看如何設(shè)置按鍵掃描碼
:viusage NORMAL 模式幫助
:exusage EX 命令幫助
:version 顯示當前 Vim 的版本號和特性

外部命令

:!ls 運行外部命令 ls,并等待返回
:r !ls 將外部命令 ls 的輸出捕獲,并插入到光標后
:w !sudo tee % sudo以后保存當前文件
:call system('ls') 調(diào)用 ls 命令,但是不顯示返回內(nèi)容
:!start notepad Windows 下啟動 notepad,最前面可以加 silent
:sil !start cmd Windows 下當前目錄打開 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 折疊光標下代碼
zC 折疊光標下所有代碼
zd 刪除光標下折疊
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 并恢復所有折疊
zo 打開一層代碼
zO 打開光標下所有代碼折疊

宏錄制

qa 開始錄制名字為 a 的宏
q 結(jié)束錄制宏
@a 播放名字為 a 的宏
@: 播放上一個宏

其他命令

CTRL-E 向上卷屏
CTRL-Y 向下卷屏
CTRL-G 顯示正在編輯的文件名,以及大小和位置信息
g CTRL-G 顯示文件的:大小,字符數(shù),單詞數(shù)和行數(shù),可視模式下也可用
zz 調(diào)整光標所在行到屏幕中央
zt 調(diào)整光標所在行到屏幕上部
zb 調(diào)整光標所在行到屏幕下部
ga 顯示光標下字符的 ascii 碼或者 unicode 編碼
g8 顯示光標下字符的 utf-8 編碼字節(jié)序
gi 回到上次進入插入的地方,并切換到插入模式
K 查詢光標下單詞的幫助
ZZ 保存文件(如果有改動的話),并關(guān)閉窗口
CTRL-PgUp 上個標簽頁,GVim OK,部分終端軟件需設(shè)置對應(yīng)鍵盤碼
CTRL-PgDown 下個標簽頁,GVim OK,部分終端軟件需設(shè)置對應(yīng)鍵盤碼
CTRL-R CTRL-W 命令模式下插入光標下單詞
CTRL-INSERT 復制到系統(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 在當前窗口插入時間
:%!xxd 開始二進制編輯
:%!xxd -r 保存二進制編輯
:r !curl -sL {URL} 讀取 url 內(nèi)容添加到光標后
: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 注釋當前行
gc{motion} 注釋 {motion} 所標注的區(qū)域,比如 gcap 注釋整段
gci{ 注釋大括號內(nèi)的內(nèi)容
gc 在 Visual Mode 下面按 gc 注釋選中區(qū)域
: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 設(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/vim-scripts/argtextobj.vim

cia 改寫函數(shù)參數(shù)
caa 改寫函數(shù)參數(shù)(包括逗號分隔)
dia 刪除函數(shù)參數(shù)
daa 刪除函數(shù)參數(shù)(包括逗號分隔)
via 選取函數(shù)參數(shù)
vaa 選取函數(shù)參數(shù)(包括逗號分隔)
yia 復制函數(shù)參數(shù)
yaa 復制函數(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://andrewscala.com/vimscript/
腳本精通 http://learnvimscriptthehardway.stevelosh.com/
中文腳本幫助 vimcdoc.sourceforge.net/doc/eval.html
十六年使用經(jīng)驗 http://zzapper.co.uk/vimtips.html

TIPS

  • 永遠不要用 CTRL-C 代替 <ESC> 完全不同的含義,容易錯誤中斷運行的后臺腳本
  • 很多人使用 CTRL-[ 代替 <ESC>,左手小指 CTRL,右手小指 [ 熟練后很方便
  • SecureCRT 中使用 Vim 8 內(nèi)嵌終端如看到奇怪字符,使用 :set t_RS= t_SH= 解決
  • SecureCRT 中使用 NeoVim 如看到奇怪字符,使用 :set guicursor= 解決
  • 多使用 ciw, ci[, ci", ci( 以及 diw, di[, di", di( 命令來快速改寫/刪除文本
  • SHIFT 相當于移動加速鍵, w b e 移動光標很慢,但是 W B E 走的很快
  • 自己要善于總結(jié)新技巧,比如移動到行首非空字符時用 0w 命令比 ^ 命令更容易輸入
  • 在空白行使用 dip 命令可以刪除所有臨近的空白行,viw 可以選擇連續(xù)空白
  • 縮進時使用 >8j >} <ap >ap =i} == 會方便很多
  • 插入模式下,當你發(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 插入光標下的單詞,命令模式也能這么用
  • 映射按鍵時,應(yīng)該默認使用 noremap ,只有特別需要的時候使用 map
  • 當你覺得做某事很低效時,你應(yīng)該停下來,u u u u 然后思考正確的高效方式來完成
  • 用 y復制文本后,命令模式中 CTRL-R 然后按雙引號 0 可以插入之前復制內(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)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,117評論 6 537
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,860評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,128評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,291評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,025評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,421評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,477評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,642評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,177評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,970評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,157評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,717評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,410評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,821評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,053評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,896評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,157評論 2 375

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

  • #########################################################...
    路峰閱讀 1,074評論 0 0
  • 1. vim 選擇文本,刪除,復制,粘貼 文本的選擇,對于編輯器來說,是很基本的東西,也經(jīng)常被用到,總結(jié)如下:v ...
    路癡千行閱讀 3,306評論 0 0
  • 曾經(jīng)在思科的工廠測試系統(tǒng)`KlemTest` (`SUSE`命令行模式)中使用`VI`/`VIM`超過2年半,現(xiàn)在...
    戈多在地獄閱讀 1,808評論 1 13
  • 1. 關(guān)于Vim vim是我最喜歡的編輯器,也是linux下第二強大的編輯器。 雖然emacs是公認的世界第一,我...
    MiracleJQ閱讀 890評論 0 3
  • (1)職業(yè)選手vs民間高手 最近,韓寒發(fā)了一篇文章《我曾對這種力量一無所知》,講述了他兩段失敗的經(jīng)驗:作為一個足球...
    觸角碎碎念閱讀 452評論 0 2