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

  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.複製、粘貼、刪除
 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 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     註釋 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

 

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   

  親測有效!

相關文章
相關標籤/搜索