# 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 :::