1. 程式人生 > >vim基本命令速查表

vim基本命令速查表

bsp 編譯 cmd index sea print sheet 自動 eas

來源:https://github.com/skywind3000/awesome-cheatsheets/blob/master/editors/vim.txt

##############################################################################
# VIM CHEATSHEET (中文速查表)  -  by skywind (created on 2017/10/12)
# Version: 21, Last Modified: 2018/02/26 21:39
# https://github.com/skywind3000/awesome-cheatsheets
##############################################################################


##############################################################################
# 光標移動
##############################################################################

h                   光標左移,同 
<Left> 鍵 j 光標下移,同 <Down> 鍵 k 光標上移,同 <Up> 鍵 l 光標右移,同 <Right> 鍵 CTRL-F 下一頁 CTRL-B 上一頁 CTRL-U 上移半屏 CTRL-D 下移半屏 0 跳到行首(是數字零,不是字母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 跳轉到下一個為 x 的字符 Fx 跳轉到上一個為 x 的字符 tx 跳轉到下一個為 x 的字符前 Tx 跳轉到上一個為 x 的字符前 ; 跳到下一個 f/t 搜索的結果 , 跳到上一個 f/t 搜索的結果 <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> 光標跳轉行首 <End> 光標跳轉行尾 CTRL-W 向後刪除單詞 CTRL-O 臨時退出插入模式,執行單條命令又返回插入模式 CTRL-\ CTRL-O 臨時退出插入模式(光標保持),執行單條命令又返回插入模式 CTRL-R 插入寄存器(內部剪貼板編號)內容 CTRL-R = 插入表達式計算結果 CTRL-F 自動縮進 CTRL-U 刪除當前行所有字符 CTRL-V {char} 插入非數字的字面量 CTRL-V {number} 插入三個數字代表的 ascii/unicode 字符 CTRL-V 065 插入 10進制 ascii 字符(兩數字) 065 即 A字符 CTRL-V x41 插入 16進制 ascii 字符(三數字) x41 即 A字符 CTRL-V o101 插入 8進制 ascii 字符(三數字) o101 即 A字符 CTRL-V u1234 插入 16進制 unicode 字符(四數字) CTRL-V U12345678 插入 16進制 unicode 字符(八數字) CTRL-K {ch1} {ch2} 插入 digraph(見 :h digraph),快速輸入日文或符號等 ############################################################################## # 文本編輯 ############################################################################## 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 撤銷整行操作 CTRL-R 撤銷上一次 u 命令 J 鏈接多行為一行 . 重復上一次操作 ~ 替換大小寫 g~iw 替換當前單詞的大小寫 gUiw 將單詞轉成大寫 guiw 將當前單詞轉成小寫 << 減少縮進 >> 增加縮進 == 自動縮進 CTRL-A 增加數字 CTRL-X 減少數字 ############################################################################## # 復制粘貼 ############################################################################## p 粘貼到光標後 P 粘貼到光標前 v 開始標記 y 復制標記內容 V 開始按行標記 CTRL-V 開始列標記 y$ 復制當前位置到本行結束的內容 yy 復制當前行 Y 復制當前行,同 yy yiw 復制當前單詞 3yy 復制光標下三行內容 v0 選中當前位置到行首 v$ 選中當前位置到行末 viw 選中當前單詞 vi) 選中小括號內的東西 vi] 選中中括號內的東西 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 交換兩行內容:先刪除當前行復制到寄存器,並粘貼 ############################################################################## # 文本對象 - c,d,v,y 等命令後接文本對象,一般為:<範圍 i/a><類型> ############################################################################## $ 到行末 0 到行首 ^ 到行首非空字符 tx 光標位置到字符 x 之前 fx 光標位置到字符 x 之處 iw 整個單詞(不包括分隔符) aw 整個單詞(包括分隔符) iW 整個 WORD(不包括分隔符) aW 整個 WORD(包括分隔符) is 整個句子(不包括分隔符) is 整個句子(不包括分隔符) i) 小括號內 a) 小括號內(包含小括號本身) i] 中括號內 a] 中括號內(包含中括號本身) i} 大括號內 a} 大括號內(包含大括號本身) i 單引號內 a 單引號內(包含單引號本身) i" 雙引號內 a" 雙引號內(包含雙引號本身) ############################################################################## # 查找替換 ############################################################################## /pattern 從光標處向文件尾搜索 pattern ?pattern 從光標處向文件頭搜索 pattern n 向同一方向執行上一次搜索 N 向相反方向執行上一次搜索 * 向前搜索光標下的單詞 # 向後搜索光標下的單詞 :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”(特殊字符使用反斜杠標註) ############################################################################## # 位置跳轉 ############################################################################## CTRL-O 跳轉到上一個位置 CTRL-I 跳轉到下一個位置 CTRL-^ 跳轉到 alternate file (當前窗口的上一個文件) % 跳轉到 {} () [] 的匹配 gd 跳轉到定義 [[ 跳轉到上一個頂層函數(比如C語言以大括號分隔) ]] 跳轉到下一個頂層函數(比如C語言以大括號分隔) [m 跳轉到上一個成員函數 ]m 跳轉到下一個成員函數 [{ 跳轉到上一處未匹配的 { ]} 跳轉到下一處未匹配的 } [( 跳轉到上一處未匹配的 ( ]) 跳轉到下一處未匹配的 ) [c 上一個不同處(diff時) ]c 下一個不同處(diff時) [/ 跳轉到 C註釋開頭 ]/ 跳轉到 C註釋結尾 ############################################################################## # VISUAL MODE - 由 v, V, CTRL-V 進入的可視模式 ############################################################################## > 增加縮進 < 減少縮進 d 刪除文字 c 改寫文字 y 拷貝文字 ~ 轉換大小寫 o 跳轉到標記區的另外一端 O 跳轉到標記塊的另外一端 u 標記區轉換為小寫 U 標記區轉換為大寫 <Esc> 退出可視模式 ############################################################################## # 文件操作 ############################################################################## :w 保存文件 :w <filename> 按名稱保存文件 :e <filename> 打開文件並編輯 :saveas <filename> 另存為文件 :r <filename> 讀取文件並將內容插入到光標後 :r !dirdir 命令的輸出捕獲並插入到光標後 :close 關閉文件 :q 退出 :q! 強制退出 :wa 保存所有文件 :cd <path> 切換 Vim 當前路徑 :pwd 顯示 Vim 當前路徑 gf 打開名稱為光標下文件名的文件 :new 打開一個新的窗口編輯新文件 :enew 在當前窗口創建新文件 :vnew 在左右切分的新窗口中編輯新文件 :tabnew 在新的標簽頁中編輯新文件 ############################################################################## # 緩存操作 ############################################################################## :ls 查案緩存列表 :bn 切換到下一個緩存 :bp 切換到上一個緩存 :bd 刪除緩存 :b 1 切換到1號緩存 :b abc 切換到文件名為 abc 開頭的緩存 :badd <filename> 將文件添加到緩存列表 :set hidden 設置隱藏模式(未保存的緩存可以被切換走,或者關閉) :set nohidden 關閉隱藏模式(未保存的緩存不能被切換走,或者關閉) n CTRL-^ 切換緩存,先輸入數字的緩存編號,再按 CTRL + 6 ############################################################################## # 窗口操作 ############################################################################## :sp <filename> 上下切分窗口並在新窗口打開文件 filename :vs <filename> 左右切分窗口並在新窗口打開文件 filename CTRL-W s 上下切分窗口 CTRL-W v 左右切分窗口 CTRL-W w 循環切換到下一個窗口 CTRL-W W 循環切換到上一個窗口 CTRL-W p 跳到上一個訪問過的窗口 CTRL-W c 關閉當前窗口 CTRL-W o 關閉其他窗口 CTRL-W h 跳到左邊的窗口 CTRL-W j 跳到下邊的窗口 CTRL-W k 跳到上邊的窗口 CTRL-W l 跳到右邊的窗口 CTRL-W + 增加當前窗口的行高,前面可以加數字 CTRL-W - 減少當前窗口的行高,前面可以加數字 CTRL-W < 減少當前窗口的列寬,前面可以加數字 CTRL-W > 增加當前窗口的列寬,前面可以加數字 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 旋轉窗口 CTRL-W T 將當前窗口移到新的標簽頁中 CTRL-W P 跳轉到預覽窗口 CTRL-W z 關閉預覽窗口 ############################################################################## # 標簽頁 ############################################################################## :tabs 顯示所有標簽頁 :tabe <filename> 在新標簽頁中打開文件 filename :tabn 下一個標簽頁 :tabp 上一個標簽頁 :tabc 關閉當前標簽頁 :tabo 關閉其他標簽頁 :tabn n 切換到第n個標簽頁,比如 :tabn 3 切換到第三個標簽頁 :tabm n 標簽移動 ngt 切換到第n個標簽頁,比如 2gt 將會切換到第二個標簽頁 gt 下一個標簽頁 gT 上一個標簽頁 ############################################################################## # 書簽 ############################################################################## :marks 顯示所有書簽 ma 保存當前位置到書簽 a ,書簽名可以用 a-z(作用範圍為文件內部), A-Z(作用範圍為所有文件) 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 list 設置顯示制表符和換行符 :set number 設置顯示行號,禁止顯示行號可以用 :set nonumber :set paste 進入粘貼模式(粘貼時禁用縮進等影響格式的東西) :set nopaste 結束粘貼模式 :set spell 允許拼寫檢查 :set hlsearch 設置高亮查找 :set ruler 總是顯示光標位置 :set incsearch 查找輸入時動態增量顯示查找結果 :set insertmode Vim 始終處於插入模式下,使用 ctrl-o 臨時執行命令 :set all 列出所有選項設置情況 :syntax on 允許語法高亮 :syntax off 禁止語法高亮 ############################################################################## # 幫助信息 ############################################################################## :h tutor 入門文檔 :h quickref 快速幫助 :h index 查詢 Vim 所有鍵盤命令定義 :h CTRL-H 查詢普通模式下 CTRL-H 是幹什麽的 :h i_CTRL-H 查詢插入模式下 CTRL-H 是幹什麽的 :h i_<Up> 查詢插入模式下方向鍵上是幹什麽的 :h pattern.txt 正則表達式幫助 :h eval 腳本編寫幫助 :h function-list 查看 VimScript 的函數列表 :h windows.txt 窗口使用幫助 :h tabpage.txt 標簽頁使用幫助 :h +timers 顯示對 +timers 特性的幫助 :h :! 查看如何運行外部命令 :h set-termcap 查看如何設置按鍵掃描碼 :version 顯示當前 Vim 的版本號和特性 ############################################################################## # 外部命令 ############################################################################## :!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 json.tool ############################################################################## # Quickfix 窗口 ############################################################################## :copen 打開 quickfix 窗口(查看編譯,grep等信息) :copen 10 打開 quickfix 窗口,並且設置高度為 10 :cclose 關閉 quickfix 窗口 :cfirst 跳到 quickfix 中第一個錯誤信息 :clast 跳到 quickfix 中最後一條錯誤信息 :cc [nr] 查看錯誤 [nr] :cnext 跳到 quickfix 中下一個錯誤信息 :cprev 跳到 quickfix 中上一個錯誤信息 ############################################################################## # 拼寫檢查 ############################################################################## :set spell 打開拼寫檢查 :set nospell 關閉拼寫檢查 ]s 下一處錯誤拼寫的單詞 [s 上一處錯誤拼寫的單詞 zg 加入單詞到拼寫詞表中 zug 撤銷上一次加入的單詞 z= 拼寫建議 ############################################################################## # 代碼折疊 ############################################################################## za 切換折疊 zA 遞歸切換折疊 zc 折疊光標下代碼 zC 折疊光標下所有代碼 zd 刪除光標下折疊 zD 遞歸刪除所有折疊 zE 刪除所有折疊 zf 創建代碼折疊 zF 指定行數創建折疊 zi 切換折疊 zM 折疊所有代碼,設置 foldlevel=0,設置 foldenable zR 打開所有代碼,設置 foldlevel 為最大值 zn 折疊 none,重置 foldenable 並打開所有代碼 zN 折疊 normal,重置 foldenable 並恢復所有折疊 zo 打開一層代碼 zO 打開光標下所有代碼折疊 ############################################################################## # 宏錄制 ############################################################################## qa 開始錄制名字為 a 的宏 q 結束錄制宏 @a 播放名字為 a 的宏 @: 播放上一個宏 ############################################################################## # 其他命令 ############################################################################## CTRL-E 向上卷屏 CTRL-Y 向下卷屏 CTRL-G 顯示正在編輯的文件名,以及大小和位置信息 zz 調整光標所在行到屏幕中央 zt 調整光標所在行到屏幕上部 zb 調整光標所在行到屏幕下部 ga 顯示光標下字符的 ascii 碼或者 unicode 編碼 K 查詢光標下單詞的幫助 :set ff=unix 設置換行為 unix :set ff=dos 設置換行為 dos :set ff? 查看換行設置 :set nohl 清除搜索高亮 :earlier 15m 回退到15分鐘前的文件內容 :.!date 在當前窗口插入時間 :%!xxd 開始二進制編輯 :%!xxd -r 保存二進制編輯 :r !curl -sL {URL} 讀取 url 內容添加到光標後 ############################################################################## # Plugin - https://github.com/tpope/vim-commentary ############################################################################## gcc 註釋當前行 gc{motion} 註釋 {motion} 所標註的區域,比如 gcap 註釋整段 gci{ 註釋大括號內的內容 gc 在 Visual Mode 下面按 gc 註釋選中區域 :7,17Commentary 註釋 717 行 ############################################################################## # 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 復制函數參數(包括逗號分隔) ############################################################################## # 網絡資源 ############################################################################## 最新版本 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 五分鐘腳本入門 http://andrewscala.com/vimscript/ 腳本精通 http://learnvimscriptthehardway.stevelosh.com/ 中文腳本幫助 vimcdoc.sourceforge.net/doc/eval.html ############################################################################## # 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/ # vim: set ts=4 sw=4 tw=0 noet noautoindent :

vim基本命令速查表