gVim編輯器——基本設置、常用命令、代碼片段


  gVim是一款強大的編輯器,可以滿足大部分語言的編程需要。尤其是其自帶的模板定制功能對於Verilog來說非常受用。然而gVim有很多操作是不同於其他編輯器的,這讓很多初學者望而卻步,因此,本文將gVim的一些常用技巧列舉了出來。

  一、_vimrc中可能用到的設置

  1.gVim的默認設置

  安裝和配置好gVim后,在Program Files (x86)\Vim目錄下有個“_vimrc”文件,雙擊選擇gVim軟件打開,這里可以對gVim進行一些默認設置,我的設置如下所示 

 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打開此文件看到中文是亂碼。

  ②小馬很生氣,於是用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,可是這樣一改菜單就亂碼了,於是又加一些改變菜單亂碼的語句,打開一看貌似好了。如果你這樣做會發現兩個問題:一是這種方式下中文的雙引號 “ ” 是不正常顯示的;二是這種方式下模板定制時不能出現漢字,否則調出模板時的漢字是亂碼。所以還是按上面的方法來吧。

  補充:

        ③問題解決后,小蔡用quartus ii打開.v文件后,又用gVim打開這個.v文件修改並保存,回到quartus ii界面加載內容后發現這個里面的中文又亂碼了!說好的解決亂碼呢?

   對於這種情況就算換成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

  ④雙擊允許,重啟軟件

  ⑤若無法解決,就以管理員身份運行

 

二、常用命令,這些命令可滿足日常90%編碼需要

 1  一、編輯模式(i鍵光標停在左側,a鍵光標停在右側)
 2  
 3  1.補全:ctrl + p,按住ctrl鍵再按p鍵可以進行代碼選擇,按Enter鍵確認
 4  
 5   
 6  二、命令模式(Esc鍵)
 7   
 8  1.復制、粘貼、刪除
 91)yy  :光標所在行,復制整行
102)y5y :光標所在行往下數,復制5行
113)p   :光標所在行,粘貼
124)5p  :光標所在行往下數,粘貼5次
135)dd  :光標所在行,刪除整行
146)d5d :光標所在行往下數,刪除5行
15  
16 2.搜索
171)搜索單個單詞 :*182)搜索單詞局部 :/需要選中的代碼,按Enter鍵。
193)搜索字符“/” :需添加\,如“/\/”表示搜索字符“/204)向上搜索    :N
215)向下搜索    :n
226)退出       ::noh,按Enter鍵
23  
24 3.跳轉
251)文件頭 :gg
262)文件尾 :G
273)第7行  ::7,按Enter鍵
284)行頭   :^
295)行尾   :$
30 
31 4.替換
321)局部替換 :第20行到第30行的i0替換成i1::20,30s/i0/i1/gc,按Enter鍵,按y表同意替換,按n表跳過的替換
332)全局替換 ::%s/i0/i1/gc,按Enter,按Enter鍵,按y表同意替換,按n示跳過替換
34 
35 5.分窗口
361)上下窗口 ::sp,按Enter鍵
372)左右窗口 ::vs,按Enter鍵
383)退出    ::q,按Enter鍵
39 
40 6.列操作:
411)選中 :按住Alt鍵,用鼠標鍵選中范圍
422)刪除 :選中需要刪除的范圍,按刪除鍵
433)插入 :輸入數據,再按ese退出
44 
45 
46 三、列操作模式(命令模式下按ctrl + q鍵)
47 
48 1.選中 :hjkl表示左下上右
49 2.刪除 :按delete刪除
50 3.插入 :按I再輸入數據,按ese退出
51 4.鼠標 :可先鼠標選中范圍,再ctrl+q進入列操作模式
52 5.如果不習慣,建議直接使用命令模式下的列操作方法
53 
54 
55 四、其他常用功能
56 
57 1.代碼文件對比功能
58     菜單 >>> 文件 >>> 分割比較,把文件添加進來,gVim自動分成兩個窗口,自動將異同顯示高亮
59 
60 2.錄制命令功能
61     qa開始錄制,開始操作命令,q結束錄制,100@a表示重復命令100次

 

三、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     注釋 717641 
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 :
View Code

 

四、gVim記憶圖(搬運)

五、代碼片段

  安裝和配置好gVim后,在Program Files (x86)\Vim目錄下有個“_vimrc”文件,雙擊選擇gVim軟件打開,在里面添加代碼片段就行了。如果做模板時就打開了一個.v文件,保存后,在那個.v文件中是無法馬上使用剛剛添加的代碼片段的,得關閉重新打開才行。代碼片段格式如下:

  “ 雙引號是注釋,相當於我們常用的 // ,:ab是命令,sx1是代碼片段的調出名稱,然后就是模板了。所以格式是 ab: 名稱 代碼,注意一下空格符。

  編寫模板程序時可以放心的打空格了。但是注意一點,這里不能按Enter鍵,如果要達到程序換行的目的,用<Enter>就行了。因為安裝時配置好了Verilog的使用,所以模板里的程序被調出時會按Verilog語法自動對齊。上圖的模板在用gVim正常寫代碼時,輸入zh2按Enter鍵即可出現模板,如下所示:

  將自己常用的代碼片段都設置進去,以后寫代碼就方便多啦!

 

六、gVim中文文檔

https://github.com/yianwillis/vimcdoc/releases

 

七、出現過的問題

1.打開文件時下方出現紅色警告:E576: viminfo: 缺少 '>' 位於行:

  解決辦法:刪除C:\Users\lenovo\_viminfo   

  親測有效!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM