gVim是一款強大的編輯器,能夠知足大部分語言的編程須要。尤爲是其自帶的模板定製功能對於Verilog來講很是受用。然而gVim有不少操做是不一樣於其餘編輯器的,這讓不少初學者望而卻步,所以,本文將gVim的一些經常使用技巧列舉了出來。html
1、_vimrc中可能用到的設置python
1.gVim的默認設置git
安裝和配置好gVim後,在Program Files (x86)\Vim目錄下有個「_vimrc」文件,雙擊選擇gVim軟件打開,這裏能夠對gVim進行一些默認設置,個人設置以下所示 github
1 "亂碼設置 2 "----------------------------------------------------------------- 3 let &termencoding=&encoding 4 set fileencodings=utf-8,gbk,gb18030,gb2312,cp936,ucs-bom,latin1 5 6 "經常使用設置 7 "----------------------------------------------------------------- 8 set showmatch "高亮顯示匹配的括號 9 set matchtime =2 "高亮括號的閃爍時間 10 set shiftwidth =4 "自動縮進符 11 set tabstop =4 "tab製表符 12 set softtabstop =4 "4個空格符視爲tab符 13 set expandtab "tab符視爲空格符 14 set smarttab "使用退格鍵時辨別tab 15 set number "行號顯示 16 "set cursorline "突出顯示當前行 17 set lbr "折行顯示時不折斷單詞 18 set guifont=Consolas:h16 "Consolas字體和16字號 19 "set guifont=Courier_New:h16 "Courier_New字體和16字號 20 "set guifont=新宋體:h16:cGB2312 "新宋體,16字號,gb2312編碼方式 21 set nobackup "不生成備份文件~ 22 set noswapfile "不生成交換文件.swp 23 "set lines=30 columns=100 "啓動時窗口大小設置 24 au GUIEnter * simalt ~x "啓動時窗口最大化 25 "set nowrap "不折行 26 "set guioptions+=b "添加水平滾動條 27 filetype indent on "載入相關縮進格式實現自動縮進
這些設置都寫了註釋,就不一一解釋了。重點說一下亂碼現象,什麼狀況會出現亂碼?正則表達式
①小偉用gVim編寫.v文件裏面有中文註釋,文件被gVim默認保存爲ANSI格式。以後小馬用quartus ii打開此文件看到中文是亂碼。shell
②小馬很生氣,因而用quartus ii在裏面寫了一句 I am angry 並保存,由於裏面有中文(雖然是亂碼)因此文件被quartus ii默認保存爲UTF-8格式。以後小偉用gVim打開此文件看到全部中文都亂碼了,全亂套了!編程
這是由於quartus ii默認的文件編碼格式是ANSI,而當裏面有中文時則保存爲UTF-8。gVim默認狀況下無論有沒有中文都是ANSI。quartus ii沒法識別ANSI格式下的中文,而gVim又沒法識別UTF-8格式下的中文。能不能把gVim設置成和quartus ii同樣,無中文時是ANSI格式有中文時是UTF-8格式呢?能夠的,只要在「_vimrc」文件裏添加了上述代碼中3-4行語句,這樣使得gVim編碼和顯示時都按utf-8,gbk,gb18030,gb2312,cp936,ucs-bom,latin1的順序去探測,這樣用gVim保存文件時和quartus ii編碼方式徹底一致,無中文時是ANSI格式,有中文時是UTF-8格式,並且查看文件時也再也不顯示亂碼了。(看.v文件是什麼編碼格式保存的只要.v文件右鍵選擇記事本打開,點另存爲就能看到編碼格式了。)網上不少別的教程說修改encoding=utf-8,但是這樣一改菜單就亂碼了,因而又加一些改變菜單亂碼的語句,打開一看貌似好了。若是你這樣作會發現兩個問題:一是這種方式下中文的雙引號 「 」 是不正常顯示的;二是這種方式下模板定製時不能出現漢字,不然調出模板時的漢字是亂碼。因此仍是按上面的方法來吧。json
補充:vim
③問題解決後,小蔡用quartus ii打開.v文件後,又用gVim打開這個.v文件修改並保存,回到quartus ii界面加載內容後發現這個裏面的中文又亂碼了!說好的解決亂碼呢?windows
對於這種狀況就算換成notepad++也是同樣亂碼,純粹是由於quartus ii自帶的編譯器太垃圾了。因此quartus ii自帶編譯器打開了代碼時最好直接在裏面修改保存,或者叉掉.v文件後再用第三方編譯器修改保存。固然,若是棄用quartus ii自帶編譯器,讓quartus ii與第三方編譯器直接關聯好,那麼這個問題也就不存在了。
2.gVim多標籤設置(慎用)
gVim是默認無標籤的,多標籤打開文件須要用命令,Windows下仍是有點麻煩。可是能夠經過對註冊表進行操做達到默認多標籤的修改。方法:
①打開Windows系統註冊表,桌面左下角輸入regedit便可進入註冊表。
②找到"HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit\command,以下圖所示:
③在「ab默認」那鼠標右鍵點擊修改,將其修改成 D:\Program Files\Vim\vim72\gvim.exe -p --remote-tab-silent "%1"
這樣用gVim打開多個文件時它就自動啓用多標籤模式了。
缺點,沒法再另外打開一個窗口顯示代碼,因此是否要這樣設置得看我的喜愛了。同時因爲更改了註冊表,可能致使Windows狀態欄中的gVim圖標異常顯示,只須要按如下步驟便可恢復:
①新建TXT文檔
②寫上如下代碼
taskkill /im explorer.exe /f cd /d %userprofile%\appdata\local del iconcache.db /a start explorer.exe exit
③文檔重命名爲xxx.bat
④雙擊容許,重啓軟件
⑤若沒法解決,就以管理員身份運行
2、經常使用命令,這些命令可知足平常90%編碼須要
1 1、編輯模式(i鍵光標停在左側,a鍵光標停在右側) 2 3 1.補全:ctrl + p,按住ctrl鍵再按p鍵能夠進行代碼選擇,按Enter鍵確認 4 5 6 2、命令模式(Esc鍵) 7 8 1.複製、粘貼、刪除 9 (1)yy :光標所在行,複製整行 10 (2)y5y :光標所在行往下數,複製5行 11 (3)p :光標所在行,粘貼 12 (4)5p :光標所在行往下數,粘貼5次 13 (5)dd :光標所在行,刪除整行 14 (6)d5d :光標所在行往下數,刪除5行 15 16 2.搜索 17 (1)搜索單個單詞 :*鍵 18 (2)搜索單詞局部 :/須要選中的代碼,按Enter鍵。 19 (3)搜索字符「/」 :需添加\,如「/\/」表示搜索字符「/」 20 (4)向上搜索 :N 21 (5)向下搜索 :n 22 (6)退出 ::noh,按Enter鍵 23 24 3.跳轉 25 (1)文件頭 :gg 26 (2)文件尾 :G 27 (3)第7行 ::7,按Enter鍵 28 (4)行頭 :^ 29 (5)行尾 :$ 30 31 4.替換 32 (1)局部替換 :第20行到第30行的i0替換成i1::20,30s/i0/i1/gc,按Enter鍵,按y表贊成替換,按n表跳過的替換 33 (2)全局替換 ::%s/i0/i1/gc,按Enter,按Enter鍵,按y表贊成替換,按n示跳過替換 34 35 5.分窗口 36 (1)上下窗口 ::sp,按Enter鍵 37 (2)左右窗口 ::vs,按Enter鍵 38 (3)退出 ::q,按Enter鍵 39 40 6.列操做: 41 (1)選中 :按住Alt鍵,用鼠標鍵選中範圍 42 (2)刪除 :選中須要刪除的範圍,按刪除鍵 43 (3)插入 :輸入數據,再按ese退出 44 45 46 3、列操做模式(命令模式下按ctrl + q鍵) 47 48 1.選中 :hjkl表示左下上右 49 2.刪除 :按delete刪除 50 3.插入 :按I再輸入數據,按ese退出 51 4.鼠標 :可先鼠標選中範圍,再ctrl+q進入列操做模式 52 5.若是不習慣,建議直接使用命令模式下的列操做方法 53 54 55 4、其餘經常使用功能 56 57 1.代碼文件對比功能 58 菜單 >>> 文件 >>> 分割比較,把文件添加進來,gVim自動分紅兩個窗口,自動將異同顯示高亮 59 60 2.錄製命令功能 61 qa開始錄製,開始操做命令,q結束錄製,100@a表示重複命令100次
3、gVim中文速查表(搬運)
1 ############################################################################## 2 # VIM CHEATSHEET (中文速查表) - by skywind (created on 2017/10/12) 3 # Version: 43, Last Modified: 2018/12/26 15:17 4 # https://github.com/skywind3000/awesome-cheatsheets 5 ############################################################################## 6 7 8 ############################################################################## 9 # 光標移動 10 ############################################################################## 11 12 h 光標左移,同 <Left> 鍵 13 j 光標下移,同 <Down> 鍵 14 k 光標上移,同 <Up> 鍵 15 l 光標右移,同 <Right> 鍵 16 CTRL-F 下一頁 17 CTRL-B 上一頁 18 CTRL-U 上移半屏 19 CTRL-D 下移半屏 20 0 跳到行首(是數字零,不是字母O),效用等同於 <Home> 鍵 21 ^ 跳到從行首開始第一個非空白字符 22 $ 跳到行尾,效用等同於 <End> 鍵 23 gg 跳到第一行,效用等同於 CTRL+<Home> 24 G 跳到最後一行,效用等同於 CTRL+<End> 25 nG 跳到第n行,好比 10G 是移動到第十行 26 :n 跳到第n行,好比 :10<回車> 是移動到第十行 27 10% 移動到文件 10% 處 28 15| 移動到當前行的 15列 29 w 跳到下一個單詞開頭 (word: 標點或空格分隔的單詞) 30 W 跳到下一個單詞開頭 (WORD: 空格分隔的單詞) 31 e 跳到下一個單詞尾部 (word: 標點或空格分隔的單詞) 32 E 跳到下一個單詞尾部 (WORD: 空格分隔的單詞) 33 b 上一個單詞頭 (word: 標點或空格分隔的單詞) 34 B 上一個單詞頭 (WORD: 空格分隔的單詞) 35 ge 上一個單詞尾 36 ) 向前移動一個句子(句號分隔) 37 ( 向後移動一個句子(句號分隔) 38 } 向前移動一個段落(空行分隔) 39 { 向後移動一個段落(空行分隔) 40 <enter> 移動到下一行首個非空字符 41 + 移動到下一行首個非空字符(同回車鍵) 42 - 移動到上一行首個非空字符 43 H 移動到屏幕上部 44 M 移動到屏幕中部 45 L 移動到屏幕下部 46 fx 跳轉到下一個爲 x 的字符,2f/ 能夠找到第二個斜杆 47 Fx 跳轉到上一個爲 x 的字符 48 tx 跳轉到下一個爲 x 的字符前 49 Tx 跳轉到上一個爲 x 的字符前 50 ; 跳到下一個 f/t 搜索的結果 51 , 跳到上一個 f/t 搜索的結果 52 <S-Left> 按住 SHIFT 按左鍵,向左移動一個單詞 53 <S-Right> 按住 SHIFT 按右鍵,向右移動一個單詞 54 <S-Up> 按住 SHIFT 按上鍵,向上翻頁 55 <S-Down> 按住 SHIFT 按下鍵,向下翻頁 56 gm 移動到行中 57 gj 光標下移一行(忽略自動換行) 58 gk 光標上移一行(忽略自動換行) 59 60 61 ############################################################################## 62 # 插入模式:進入退出 63 ############################################################################## 64 65 i 在光標處進入插入模式 66 I 在行首進入插入模式 67 a 在光標後進入插入模式 68 A 在行尾進入插入模式 69 o 在下一行插入新行並進入插入模式 70 O 在上一行插入新行並進入插入模式 71 gi 進入到上一次插入模式的位置 72 <ESC> 退出插入模式 73 CTRL-[ 退出插入模式(同 ESC 等價,但更順手) 74 75 76 ############################################################################## 77 # INSERT MODE - 由 i, I, a, A, o, O 等命令進入插入模式後 78 ############################################################################## 79 80 <Up> 光標向上移動 81 <Down> 光標向下移動 82 <Left> 光標向左移動 83 <Right> 光標向右移動 84 <S-Left> 按住 SHIFT 按左鍵,向左移動一個單詞 85 <S-Right> 按住 SHIFT 按右鍵,向右移動一個單詞 86 <S-Up> 按住 SHIFT 按上鍵,向上翻頁 87 <S-Down> 按住 SHIFT 按下鍵,向下翻頁 88 <PageUp> 上翻頁 89 <PageDown> 下翻頁 90 <Delete> 刪除光標處字符 91 <BS> Backspace 向後刪除字符 92 <Home> 光標跳轉行首 93 <End> 光標跳轉行尾 94 CTRL-W 向後刪除單詞 95 CTRL-O 臨時退出插入模式,執行單條命令又返回插入模式 96 CTRL-\ CTRL-O 臨時退出插入模式(光標保持),執行單條命令又返回插入模式 97 CTRL-R 0 插入寄存器(內部 0號剪貼板)內容,CTRL-R 後可跟寄存器名 98 CTRL-R " 插入匿名寄存器內容,至關於插入模式下 p粘貼 99 CTRL-R = 插入表達式計算結果,等號後面跟表達式 100 CTRL-R : 插入上一次命令行命令 101 CTRL-R / 插入上一次搜索的關鍵字 102 CTRL-F 自動縮進 103 CTRL-U 刪除當前行全部字符 104 CTRL-V {char} 插入非數字的字面量 105 CTRL-V {number} 插入三個數字表明的 ascii/unicode 字符 106 CTRL-V 065 插入 10進制 ascii 字符(兩數字) 065 即 A字符 107 CTRL-V x41 插入 16進制 ascii 字符(三數字) x41 即 A字符 108 CTRL-V o101 插入 8進制 ascii 字符(三數字) o101 即 A字符 109 CTRL-V u1234 插入 16進制 unicode 字符(四數字) 110 CTRL-V U12345678 插入 16進制 unicode 字符(八數字) 111 CTRL-K {ch1} {ch2} 插入 digraph(見 :h digraph),快速輸入日文或符號等 112 113 114 ############################################################################## 115 # 文本編輯 116 ############################################################################## 117 118 r 替換當前字符 119 R 進入替換模式,直至 ESC 離開 120 s 替換字符(刪除光標處字符,並進入插入模式,前可接數量) 121 S 替換行(刪除當前行,並進入插入模式,前可接數量) 122 cc 改寫當前行(刪除當前行並進入插入模式),同 S 123 cw 改寫光標開始處的當前單詞 124 ciw 改寫光標所處的單詞 125 caw 改寫光標所處的單詞,而且包括先後空格(若是有的話) 126 c0 改寫到行首 127 c^ 改寫到行首(第一個非零字符) 128 c$ 改寫到行末 129 C 改寫到行尾(同c$) 130 ci" 改寫雙引號中的內容 131 ci' 改寫單引號中的內容 132 cib 改寫小括號中的內容 133 cab 改寫小括號中的內容(包含小括號自己) 134 ci) 改寫小括號中的內容 135 ci] 改寫中括號中內容 136 ciB 改寫大括號中內容 137 caB 改寫大括號中的內容(包含大括號自己) 138 ci} 改寫大括號中內容 139 cit 改寫 xml tag 中的內容 140 cis 改寫當前句子 141 c2w 改寫下兩個單詞 142 ct( 改寫到小括號前 143 x 刪除當前字符,前面能夠接數字,3x表明刪除三個字符 144 X 向前刪除字符 145 dd 刪除當前行 146 d0 刪除到行首 147 d^ 刪除到行首(第一個非零字符) 148 d$ 刪除到行末 149 D 刪除到行末(同 d$) 150 dw 刪除當前單詞 151 diw 刪除光標所處的單詞 152 daw 刪除光標所處的單詞,幷包含先後空格(若是有的話) 153 di" 刪除雙引號中的內容 154 di' 刪除單引號中的內容 155 dib 刪除小括號中的內容 156 di) 刪除小括號中的內容 157 dab 刪除小括號內的內容(包含小括號自己) 158 di] 刪除中括號中內容 159 diB 刪除大括號中內容 160 di} 刪除大括號中內容 161 daB 刪除大括號內的內容(包含大括號自己) 162 dit 刪除 xml tag 中的內容 163 dis 刪除當前句子 164 d2w 刪除下兩個單詞 165 dt( 刪除到小括號前 166 dgg 刪除到文件頭部 167 dG 刪除到文件尾部 168 d} 刪除下一段 169 d{ 刪除上一段 170 u 撤銷 171 U 撤銷整行操做 172 CTRL-R 撤銷上一次 u 命令 173 J 連接多行爲一行 174 . 重複上一次操做 175 ~ 替換大小寫 176 g~iw 替換當前單詞的大小寫 177 gUiw 將單詞轉成大寫 178 guiw 將當前單詞轉成小寫 179 guu 全行轉爲小寫 180 gUU 全行轉爲大寫 181 << 減小縮進 182 >> 增長縮進 183 == 自動縮進 184 CTRL-A 增長數字 185 CTRL-X 減小數字 186 187 188 ############################################################################## 189 # 複製粘貼 190 ############################################################################## 191 192 p 粘貼到光標後 193 P 粘貼到光標前 194 v 開始標記 195 y 複製標記內容 196 V 開始按行標記 197 CTRL-V 開始列標記 198 y$ 複製當前位置到本行結束的內容 199 yy 複製當前行 200 Y 複製當前行,同 yy 201 yiw 複製當前單詞 202 3yy 複製光標下三行內容 203 v0 選中當前位置到行首 204 v$ 選中當前位置到行末 205 viw 選中當前單詞 206 vib 選中小括號內的東西 207 vi) 選中小括號內的東西 208 vi] 選中中括號內的東西 209 viB 選中大括號內的東西 210 vi} 選中大括號內的東西 211 vis 選中句子中的東西 212 vab 選中小括號內的東西(包含小括號自己) 213 va) 選中小括號內的東西(包含小括號自己) 214 va] 選中中括號內的東西(包含中括號自己) 215 vaB 選中大括號內的東西(包含大括號自己) 216 va} 選中大括號內的東西(包含大括號自己) 217 gv 從新選擇上一次選中的文字 218 :set paste 容許粘貼模式(避免粘貼時自動縮進影響格式) 219 :set nopaste 禁止粘貼模式 220 "?yy 複製當前行到寄存器 ? ,問號表明 0-9 的寄存器名稱 221 "?d3j 刪除光標下三行內容,並放到寄存器 ? ,問號表明 0-9 的寄存器名稱 222 "?p 將寄存器 ? 的內容粘貼到光標後 223 "?P 將寄存器 ? 的內容粘貼到光標前 224 :registers 顯示全部寄存器內容 225 :[range]y 複製範圍,好比 :20,30y 是複製20到30行,:10y 是複製第十行 226 :[range]d 刪除範圍,好比 :20,30d 是刪除20到30行,:10d 是刪除第十行 227 ddp 交換兩行內容:先刪除當前行復制到寄存器,並粘貼 228 "_[command] 使用[command]刪除內容,而且不進行復制(不會污染寄存器) 229 "*[command] 使用[command]複製內容到系統剪貼板(須要vim版本有clipboard支持) 230 231 232 ############################################################################## 233 # 文本對象 - c,d,v,y 等命令後接文本對象,通常爲:<範圍 i/a><類型> 234 ############################################################################## 235 236 $ 到行末 237 0 到行首 238 ^ 到行首非空字符 239 tx 光標位置到字符 x 以前 240 fx 光標位置到字符 x 之處 241 iw 整個單詞(不包括分隔符) 242 aw 整個單詞(包括分隔符) 243 iW 整個 WORD(不包括分隔符) 244 aW 整個 WORD(包括分隔符) 245 is 整個句子(不包括分隔符) 246 ib 小括號內 247 ab 小括號內(包含小括號自己) 248 iB 大括號內 249 aB 大括號內(包含大括號自己) 250 i) 小括號內 251 a) 小括號內(包含小括號自己) 252 i] 中括號內 253 a] 中括號內(包含中括號自己) 254 i} 大括號內 255 a} 大括號內(包含大括號自己) 256 i' 單引號內 257 a' 單引號內(包含單引號自己) 258 i" 雙引號內 259 a" 雙引號內(包含雙引號自己) 260 2i) 往外兩層小括號內 261 2a) 往外兩層小括號內(包含小括號自己) 262 2f) 到第二個小括號處 263 2t) 到第二個小括號前 264 265 266 ############################################################################## 267 # 查找替換 268 ############################################################################## 269 270 /pattern 從光標處向文件尾搜索 pattern 271 ?pattern 從光標處向文件頭搜索 pattern 272 n 向同一方向執行上一次搜索 273 N 向相反方向執行上一次搜索 274 * 向前搜索光標下的單詞 275 # 向後搜索光標下的單詞 276 :s/p1/p2/g 將當前行中全替換p1爲p2 277 :%s/p1/p2/g 將當前文件中全替換p1爲p2 278 :%s/p1/p2/gc 將當前文件中全替換p1爲p2,而且每處詢問你是否替換 279 :10,20s/p1/p2/g 將第10到20行中全部p1替換爲p2 280 :%s/1\\2\/3/123/g 將「1\2/3」 替換爲 「123」(特殊字符使用反斜槓標註) 281 :%s/\r//g 刪除 DOS 換行符 ^M 282 283 284 ############################################################################## 285 # VISUAL MODE - 由 v, V, CTRL-V 進入的可視模式 286 ############################################################################## 287 288 > 增長縮進 289 < 減小縮進 290 d 刪除高亮選中的文字 291 x 刪除高亮選中的文字 292 c 改寫文字,即刪除高亮選中的文字並進入插入模式 293 s 改寫文字,即刪除高亮選中的文字並進入插入模式 294 y 拷貝文字 295 ~ 轉換大小寫 296 o 跳轉到標記區的另一端 297 O 跳轉到標記塊的另一端 298 u 標記區轉換爲小寫 299 U 標記區轉換爲大寫 300 g CTRL-G 顯示所選擇區域的統計信息 301 <Esc> 退出可視模式 302 303 304 ############################################################################## 305 # 位置跳轉 306 ############################################################################## 307 308 CTRL-O 跳轉到上一個位置 309 CTRL-I 跳轉到下一個位置 310 CTRL-^ 跳轉到 alternate file (當前窗口的上一個文件) 311 % 跳轉到 {} () [] 的匹配 312 gd 跳轉到局部定義(光標下的單詞的定義) 313 gD 跳轉到全局定義(光標下的單詞的定義) 314 gf 打開名稱爲光標下文件名的文件 315 [[ 跳轉到上一個頂層函數(好比C語言以大括號分隔) 316 ]] 跳轉到下一個頂層函數(好比C語言以大括號分隔) 317 [m 跳轉到上一個成員函數 318 ]m 跳轉到下一個成員函數 319 [{ 跳轉到上一處未匹配的 { 320 ]} 跳轉到下一處未匹配的 } 321 [( 跳轉到上一處未匹配的 ( 322 ]) 跳轉到下一處未匹配的 ) 323 [c 上一個不一樣處(diff時) 324 ]c 下一個不一樣處(diff時) 325 [/ 跳轉到 C註釋開頭 326 ]/ 跳轉到 C註釋結尾 327 `` 回到上次跳轉的位置 328 '' 回到上次跳轉的位置 329 `. 回到上次編輯的位置 330 '. 回到上次編輯的位置 331 332 333 ############################################################################## 334 # 文件操做 335 ############################################################################## 336 337 :w 保存文件 338 :w <filename> 按名稱保存文件 339 :e <filename> 打開文件並編輯 340 :saveas <filename> 另存爲文件 341 :r <filename> 讀取文件並將內容插入到光標後 342 :r !dir 將 dir 命令的輸出捕獲並插入到光標後 343 :close 關閉文件 344 :q 退出 345 :q! 強制退出 346 :wa 保存全部文件 347 :cd <path> 切換 Vim 當前路徑 348 :pwd 顯示 Vim 當前路徑 349 :new 打開一個新的窗口編輯新文件 350 :enew 在當前窗口建立新文件 351 :vnew 在左右切分的新窗口中編輯新文件 352 :tabnew 在新的標籤頁中編輯新文件 353 354 355 ############################################################################## 356 # 已打開文件操做 357 ############################################################################## 358 359 :ls 查案緩存列表 360 :bn 切換到下一個緩存 361 :bp 切換到上一個緩存 362 :bd 刪除緩存 363 :b 1 切換到1號緩存 364 :b abc 切換到文件名爲 abc 開頭的緩存 365 :badd <filename> 將文件添加到緩存列表 366 :set hidden 設置隱藏模式(未保存的緩存能夠被切換走,或者關閉) 367 :set nohidden 關閉隱藏模式(未保存的緩存不能被切換走,或者關閉) 368 n CTRL-^ 切換緩存,先輸入數字的緩存編號,再按 CTRL + 6 369 370 371 ############################################################################## 372 # 窗口操做 373 ############################################################################## 374 375 :sp <filename> 上下切分窗口並在新窗口打開文件 filename 376 :vs <filename> 左右切分窗口並在新窗口打開文件 filename 377 CTRL-W s 上下切分窗口 378 CTRL-W v 左右切分窗口 379 CTRL-W w 循環切換到下一個窗口 380 CTRL-W W 循環切換到上一個窗口 381 CTRL-W p 跳到上一個訪問過的窗口 382 CTRL-W c 關閉當前窗口 383 CTRL-W o 關閉其餘窗口 384 CTRL-W h 跳到左邊的窗口 385 CTRL-W j 跳到下邊的窗口 386 CTRL-W k 跳到上邊的窗口 387 CTRL-W l 跳到右邊的窗口 388 CTRL-W + 增長當前窗口的行高,前面能夠加數字 389 CTRL-W - 減小當前窗口的行高,前面能夠加數字 390 CTRL-W < 減小當前窗口的列寬,前面能夠加數字 391 CTRL-W > 增長當前窗口的列寬,前面能夠加數字 392 CTRL-W = 讓全部窗口寬高相同 393 CTRL-W H 將當前窗口移動到最左邊 394 CTRL-W J 將當前窗口移動到最下邊 395 CTRL-W K 將當前窗口移動到最上邊 396 CTRL-W L 將當前窗口移動到最右邊 397 CTRL-W x 交換窗口 398 CTRL-W f 在新窗口中打開名爲光標下文件名的文件 399 CTRL-W gf 在新標籤頁中打開名爲光標下文件名的文件 400 CTRL-W R 旋轉窗口 401 CTRL-W T 將當前窗口移到新的標籤頁中 402 CTRL-W P 跳轉到預覽窗口 403 CTRL-W z 關閉預覽窗口 404 CTRL-W _ 縱向最大化當前窗口 405 CTRL-W | 橫向最大化當前窗口 406 407 408 ############################################################################## 409 # 標籤頁 410 ############################################################################## 411 412 :tabs 顯示全部標籤頁 413 :tabe <filename> 在新標籤頁中打開文件 filename 414 :tabn 下一個標籤頁 415 :tabp 上一個標籤頁 416 :tabc 關閉當前標籤頁 417 :tabo 關閉其餘標籤頁 418 :tabn n 切換到第n個標籤頁,好比 :tabn 3 切換到第三個標籤頁 419 :tabm n 標籤移動 420 :tabfirst 切換到第一個標籤頁 421 :tablast 切換到最後一個標籤頁 422 :tab help 在標籤頁打開幫助 423 :tab drop <file> 若是文件已被其餘標籤頁和窗口打開則跳過去,不然新標籤打開 424 :tab split 在新的標籤頁中打開當前窗口裏的文件 425 :tab ball 將緩存中全部文件用標籤頁打開 426 :set showtabline=? 設置爲 0 就不顯示標籤頁標籤,1會按需顯示,2會永久顯示 427 ngt 切換到第n個標籤頁,好比 2gt 將會切換到第二個標籤頁 428 gt 下一個標籤頁 429 gT 上一個標籤頁 430 431 432 ############################################################################## 433 # 書籤 434 ############################################################################## 435 436 :marks 顯示全部書籤 437 ma 保存當前位置到書籤 a ,書籤名小寫字母爲文件內,大寫全局 438 'a 跳轉到書籤 a所在的行 439 `a 跳轉到書籤 a所在位置 440 `. 跳轉到上一次編輯的行 441 'A 跳轉到全文書籤 A 442 [' 跳轉到上一個書籤 443 ]' 跳轉到下一個書籤 444 '< 跳到上次可視模式選擇區域的開始 445 '> 跳到上次可視模式選擇區域的結束 446 447 448 ############################################################################## 449 # 經常使用設置 450 ############################################################################## 451 452 :set nocompatible 設置不兼容原始 vi 模式(必須設置在最開頭) 453 :set bs=? 設置BS鍵模式,現代編輯器爲 :set bs=eol,start,indent 454 :set sw=4 設置縮進寬度爲 4 455 :set ts=4 設置製表符寬度爲 4 456 :set noet 設置不展開 tab 成空格 457 :set et 設置展開 tab 成空格 458 :set winaltkeys=no 設置 GVim 下正常捕獲 ALT 鍵 459 :set nowrap 關閉自動換行 460 :set ttimeout 容許終端按鍵檢測超時(終端下功能鍵爲一串ESC開頭的掃描碼) 461 :set ttm=100 設置終端按鍵檢測超時爲100毫秒 462 :set term=? 設置終端類型,好比常見的 xterm 463 :set ignorecase 設置搜索是否忽略大小寫 464 :set smartcase 智能大小寫,默認忽略大小寫,除非搜索內容裏包含大寫字母 465 :set list 設置顯示製表符和換行符 466 :set number 設置顯示行號,禁止顯示行號能夠用 :set nonumber 467 :set relativenumber 設置顯示相對行號(其餘行與當前行的距離) 468 :set paste 進入粘貼模式(粘貼時禁用縮進等影響格式的東西) 469 :set nopaste 結束粘貼模式 470 :set spell 容許拼寫檢查 471 :set hlsearch 設置高亮查找 472 :set ruler 老是顯示光標位置 473 :set incsearch 查找輸入時動態增量顯示查找結果 474 :set insertmode Vim 始終處於插入模式下,使用 ctrl-o 臨時執行命令 475 :set all 列出全部選項設置狀況 476 :syntax on 容許語法高亮 477 :syntax off 禁止語法高亮 478 479 480 ############################################################################## 481 # 幫助信息 482 ############################################################################## 483 484 :h tutor 入門文檔 485 :h quickref 快速幫助 486 :h index 查詢 Vim 全部鍵盤命令定義 487 :h summary 幫助你更好的使用內置幫助系統 488 :h CTRL-H 查詢普通模式下 CTRL-H 是幹什麼的 489 :h i_CTRL-H 查詢插入模式下 CTRL-H 是幹什麼的 490 :h i_<Up> 查詢插入模式下方向鍵上是幹什麼的 491 :h pattern.txt 正則表達式幫助 492 :h eval 腳本編寫幫助 493 :h function-list 查看 VimScript 的函數列表 494 :h windows.txt 窗口使用幫助 495 :h tabpage.txt 標籤頁使用幫助 496 :h +timers 顯示對 +timers 特性的幫助 497 :h :! 查看如何運行外部命令 498 :h tips 查看 Vim 內置的經常使用技巧文檔 499 :h set-termcap 查看如何設置按鍵掃描碼 500 :viusage NORMAL 模式幫助 501 :exusage EX 命令幫助 502 :version 顯示當前 Vim 的版本號和特性 503 504 505 ############################################################################## 506 # 外部命令 507 ############################################################################## 508 509 :!ls 運行外部命令 ls,並等待返回 510 :r !ls 將外部命令 ls 的輸出捕獲,並插入到光標後 511 :w !sudo tee % sudo之後保存當前文件 512 :call system('ls') 調用 ls 命令,可是不顯示返回內容 513 :!start notepad Windows 下啓動 notepad,最前面能夠加 silent 514 :sil !start cmd Windows 下當前目錄打開 cmd 515 :%!prog 運行文字過濾程序,如整理 json格式 :%!python -m json.tool 516 517 518 ############################################################################## 519 # Quickfix 窗口 520 ############################################################################## 521 522 :copen 打開 quickfix 窗口(查看編譯,grep等信息) 523 :copen 10 打開 quickfix 窗口,而且設置高度爲 10 524 :cclose 關閉 quickfix 窗口 525 :cfirst 跳到 quickfix 中第一個錯誤信息 526 :clast 跳到 quickfix 中最後一條錯誤信息 527 :cc [nr] 查看錯誤 [nr] 528 :cnext 跳到 quickfix 中下一個錯誤信息 529 :cprev 跳到 quickfix 中上一個錯誤信息 530 531 532 ############################################################################## 533 # 拼寫檢查 534 ############################################################################## 535 536 :set spell 打開拼寫檢查 537 :set nospell 關閉拼寫檢查 538 ]s 下一處錯誤拼寫的單詞 539 [s 上一處錯誤拼寫的單詞 540 zg 加入單詞到拼寫詞表中 541 zug 撤銷上一次加入的單詞 542 z= 拼寫建議 543 544 545 ############################################################################## 546 # 代碼摺疊 547 ############################################################################## 548 549 za 切換摺疊 550 zA 遞歸切換摺疊 551 zc 摺疊光標下代碼 552 zC 摺疊光標下全部代碼 553 zd 刪除光標下摺疊 554 zD 遞歸刪除全部摺疊 555 zE 刪除全部摺疊 556 zf 建立代碼摺疊 557 zF 指定行數建立摺疊 558 zi 切換摺疊 559 zm 全部代碼摺疊一層 560 zr 全部代碼打開一層 561 zM 摺疊全部代碼,設置 foldlevel=0,設置 foldenable 562 zR 打開全部代碼,設置 foldlevel 爲最大值 563 zn 摺疊 none,重置 foldenable 並打開全部代碼 564 zN 摺疊 normal,重置 foldenable 並恢復全部摺疊 565 zo 打開一層代碼 566 zO 打開光標下全部代碼摺疊 567 568 569 ############################################################################## 570 # 宏錄製 571 ############################################################################## 572 573 qa 開始錄製名字爲 a 的宏 574 q 結束錄製宏 575 @a 播放名字爲 a 的宏 576 @@ 播放上一個宏 577 @: 重複上一個ex命令(即冒號命令) 578 579 580 ############################################################################## 581 # 其餘命令 582 ############################################################################## 583 584 CTRL-X CTRL-F 插入模式下文件路徑補全 585 CTRL-X CTRL-O 插入下 Omnifunc 補全 586 CTRL-X CTRL-N 插入模式下關鍵字補全 587 CTRL-X CTRL-E 插入模式下向上滾屏 588 CTRL-X CTRL-Y 插入模式下向下滾屏 589 CTRL-E 向上滾屏 590 CTRL-Y 向下滾屏 591 CTRL-G 顯示正在編輯的文件名,以及大小和位置信息 592 g CTRL-G 顯示文件的:大小,字符數,單詞數和行數,可視模式下也可用 593 zz 調整光標所在行到屏幕中央 594 zt 調整光標所在行到屏幕上部 595 zb 調整光標所在行到屏幕下部 596 ga 顯示光標下字符的 ascii 碼或者 unicode 編碼 597 g8 顯示光標下字符的 utf-8 編碼字節序 598 gi 回到上次進入插入的地方,並切換到插入模式 599 K 查詢光標下單詞的幫助 600 ZZ 保存文件(若是有改動的話),並關閉窗口 601 ZQ 不保存文件關閉窗口 602 CTRL-PgUp 上個標籤頁,GVim OK,部分終端軟件需設置對應鍵盤碼 603 CTRL-PgDown 下個標籤頁,GVim OK,部分終端軟件需設置對應鍵盤碼 604 CTRL-R CTRL-W 命令模式下插入光標下單詞 605 CTRL-INSERT 複製到系統剪貼板(GVIM) 606 SHIFT-INSERT 粘貼系統剪貼板的內容(GVIM) 607 :set ff=unix 設置換行爲 unix 608 :set ff=dos 設置換行爲 dos 609 :set ff? 查看換行設置 610 :set nohl 清除搜索高亮 611 :set termcap 查看會從終端接收什麼以及會發送給終端什麼命令 612 :set guicursor= 解決 SecureCRT/PenguiNet 中 NeoVim 局部奇怪字符問題 613 :set t_RS= t_SH= 解決 SecureCRT/PenguiNet 中 Vim8.0 終端功能奇怪字符 614 :set fo+=a 開啓文本段的實時自動格式化 615 :earlier 15m 回退到15分鐘前的文件內容 616 :.!date 在當前窗口插入時間 617 :%!xxd 開始二進制編輯 618 :%!xxd -r 保存二進制編輯 619 :r !curl -sL {URL} 讀取 url 內容添加到光標後 620 :g/^\s*$/d 刪除空行 621 :g/green/d 刪除全部包含 green 的行 622 :v/green/d 刪除全部不包含 green 的行 623 :g/gladiolli/# 搜索單詞打印結果,並在結果前加上行號 624 :g/ab.*cd.*efg/# 搜索包含 ab,cd 和 efg 的行,打印結果以及行號 625 :v/./,/./-j 壓縮空行 626 :Man bash 在 Vim 中查看 man,先調用 :runtime! ftplugin/man.vim 激活 627 /fred\|joe 搜索 fred 或者 joe 628 /\<\d\d\d\d\> 精確搜索四個數字 629 /^\n\{3} 搜索連續三個空行 630 631 632 ############################################################################## 633 # Plugin - https://github.com/tpope/vim-commentary 634 ############################################################################## 635 636 gcc 註釋當前行 637 gc{motion} 註釋 {motion} 所標註的區域,好比 gcap 註釋整段 638 gci{ 註釋大括號內的內容 639 gc 在 Visual Mode 下面按 gc 註釋選中區域 640 :7,17Commentary 註釋 7 到 17 行 641 642 643 ############################################################################## 644 # Plugin - https://github.com/junegunn/vim-easy-align 645 ############################################################################## 646 647 :EasyAlign = 以第一個匹配的=爲中心對齊 648 :EasyAlign *= 匹配而且對齊全部= 649 650 651 ############################################################################## 652 # Plugin - https://github.com/tpope/vim-unimpaired 653 ############################################################################## 654 655 [space 向上插入空行 656 ]space 向下插入空行 657 [e 替換當前行和上一行 658 ]e 替換當前行和下一行 659 [x XML 編碼 660 ]x XML 解碼 661 [u URL 編碼 662 ]u URL 解碼 663 [y C 字符串編碼 664 ]y C 字符串解碼 665 [q 上一個 quickfix 錯誤 666 ]q 下一個 quickfix 錯誤 667 [Q 第一個 quickfix 錯誤 668 ]Q 最後一個 quickfix 錯誤 669 [f 切換同目錄裏上一個文件 670 ]f 切換同目錄裏下一個文件 671 [os 設置 :set spell 672 ]os 設置 :set nospell 673 =os 設置 :set invspell 674 [on 顯示行號 675 ]on 關閉行號 676 [ol 顯示回車和製表符 :set list 677 ]ol 不顯示回車和製表符 :set nolist 678 [b 緩存切換到上一個文件,即 :bp 679 ]b 緩存切換到下一個文件,即 :bn 680 [B 緩存切換到第一個文件,即 :bfirst 681 ]B 緩存切換到最後一個文件,即 :blast 682 683 684 ############################################################################## 685 # Plugin - https://github.com/skywind3000/asyncrun.vim 686 ############################################################################## 687 688 :AsyncRun ls 異步運行命令 ls 結果輸出到 quickfix 使用 :copen 查看 689 :AsyncRun -raw ls 異步運行命令 ls 結果不匹配 errorformat 690 691 692 ############################################################################## 693 # Plugin - https://github.com/gaving/vim-textobj-argument 694 ############################################################################## 695 696 cia 改寫函數參數 697 caa 改寫函數參數(包括逗號分隔) 698 dia 刪除函數參數 699 daa 刪除函數參數(包括逗號分隔) 700 via 選取函數參數 701 vaa 選取函數參數(包括逗號分隔) 702 yia 複製函數參數 703 yaa 複製函數參數(包括逗號分隔) 704 705 706 ############################################################################## 707 # 網絡資源 708 ############################################################################## 709 710 最新版本 https://github.com/vim/vim 711 Windows 最新版 https://github.com/vim/vim-win32-installer/releases 712 插件瀏覽 http://vimawesome.com 713 reddit https://www.reddit.com/r/vim/ 714 正確設置 ALT/BS 鍵 http://www.skywind.me/blog/archives/2021 715 視頻教程 http://vimcasts.org/ 716 中文幫助 http://vimcdoc.sourceforge.net/doc/help.html 717 中文版入門到精通 https://github.com/wsdjeg/vim-galore-zh_cn 718 五分鐘腳本入門 http://www.skywind.me/blog/archives/2193 719 腳本精通 http://learnvimscriptthehardway.stevelosh.com/ 720 中文腳本幫助 vimcdoc.sourceforge.net/doc/eval.html 721 十六年使用經驗 http://zzapper.co.uk/vimtips.html 722 配色方案 http://vimcolors.com/ 723 724 725 ############################################################################## 726 # TIPS 727 ############################################################################## 728 729 - 永遠不要用 CTRL-C 代替 <ESC> 徹底不一樣的含義,容易錯誤中斷運行的後臺腳本 730 - 不少人使用 CTRL-[ 代替 <ESC>,左手小指 CTRL,右手小指 [ 熟練後很方便 731 - 某些終端中使用 Vim 8 內嵌終端如看到奇怪字符,使用 :set t_RS= t_SH= 解決 732 - 某些終端中使用 NeoVim 如看到奇怪字符,使用 :set guicursor= 解決 733 - 多使用 ciw, ci[, ci", ci( 以及 diw, di[, di", di( 命令來快速改寫/刪除文本 734 - 在行內左右移動光標時,多使用w b e或W B E,而不是h l或方向鍵,這樣會快不少 735 - SHIFT 至關於移動加速鍵, w b e 移動光標很慢,可是 W B E 走的很快 736 - 本身要善於總結新技巧,好比移動到行首非空字符時用 0w 命令比 ^ 命令更容易輸入 737 - 在空白行使用 dip 命令能夠刪除全部臨近的空白行,viw 能夠選擇連續空白 738 - 縮進時使用 >8j >} <ap >ap =i} == 會方便不少 739 - 插入模式下,當你發現一個單詞寫錯了,應該多用 CTRL-W 這比 <BackSpace> 快 740 - y d c 命令能夠很好結合 f t 和 /X 好比 dt) 和 y/end<cr> 741 - c d x 命令會自動填充寄存器 "1 到 "9 , y 命令會自動填充 "0 寄存器 742 - 用 v 命令選擇文本時,能夠用 o 掉頭選擇,有時頗有用 743 - 寫文章時,能夠寫一段代碼塊,而後選中後執行 :!python 代碼塊就會被替換成結果 744 - 搜索後常用 :nohl 來消除高亮,使用很頻繁,能夠 map 到 <BackSpace> 上 745 - 搜索時能夠用 CTRL-R CTRL-W 插入光標下的單詞,命令模式也能這麼用 746 - 映射按鍵時,應該默認使用 noremap ,只有特別須要的時候使用 map 747 - 當你以爲作某事很低效時,你應該停下來,u u u u 而後思考正確的高效方式來完成 748 - 用 y複製文本後,命令模式中 CTRL-R 而後按雙引號 0 能夠插入以前複製內容 749 - Windows 下的 GVim 能夠設置 set rop=type:directx,renmode:5 加強顯示 750 751 752 ############################################################################## 753 # References 754 ############################################################################## 755 756 https://github.com/groenewege/vimrc/blob/master/vim_cheat_sheet.txt 757 http://blog.g-design.net/post/4789778607/vim-cheat-sheet 758 http://www.keyxl.com/aaa8263/290/VIM-keyboard-shortcuts.htm 759 http://jmcpherson.org/editing.html 760 http://www.fprintf.net/vimCheatSheet.html 761 http://www.ouyaoxiazai.com/article/24/654.html 762 http://bbs.it-home.org/thread-80794-1-1.html 763 http://www.lpfrx.com/wp-content/uploads/2008/09/vi.jpg 764 http://michael.peopleofhonoronly.com/vim/ 765 https://github.com/hobbestigrou/vimtips-fortune/blob/master/fortunes/vimtips 766 https://github.com/glts/vim-cottidie/blob/master/autoload/cottidie/tips 767 768 769 # vim: set ts=4 sw=4 tw=0 noet noautoindent fdm=manual :
4、gVim記憶圖(搬運)
5、代碼片斷
安裝和配置好gVim後,在Program Files (x86)\Vim目錄下有個「_vimrc」文件,雙擊選擇gVim軟件打開,在裏面添加代碼片斷就好了。若是作模板時就打開了一個.v文件,保存後,在那個.v文件中是沒法立刻使用剛剛添加的代碼片斷的,得關閉從新打開才行。代碼片斷格式以下:
「 雙引號是註釋,至關於咱們經常使用的 // ,:ab是命令,sx1是代碼片斷的調出名稱,而後就是模板了。因此格式是 ab: 名稱 代碼,注意一下空格符。
編寫模板程序時能夠放心的打空格了。可是注意一點,這裏不能按Enter鍵,若是要達到程序換行的目的,用<Enter>就好了。由於安裝時配置好了Verilog的使用,因此模板裏的程序被調出時會按Verilog語法自動對齊。上圖的模板在用gVim正常寫代碼時,輸入zh2按Enter鍵便可出現模板,以下所示:
將本身經常使用的代碼片斷都設置進去,之後寫代碼就方便多啦!
6、gVim中文文檔
https://github.com/yianwillis/vimcdoc/releases
7、出現過的問題
1.打開文件時下方出現紅色警告:E576: viminfo: 缺乏 '>' 位於行:
解決辦法:刪除C:\Users\lenovo\_viminfo
親測有效!