去年上半年開始全面使用linux進(jìn)行開發(fā)和娛樂了,現(xiàn)在已經(jīng)回不去windows了。
話歸正傳,在linux上一直使用vim,慢慢熟悉了它的命令,才終于領(lǐng)悟了什么是編輯器之神。
最近抽空整理了這份速查表,收獲頗豐,并分享給大家。
進(jìn)入vim
| 命令 |
描述 |
| vim filename |
打開或新建文件,并將光標(biāo)置于第一行首 |
| vim +n filename |
打開文件,并將光標(biāo)置于第n行首 |
| vim + filename |
打開文件,并將光標(biāo)置于最后一行首 |
| vim +/pattern filename |
打開文件,并將光標(biāo)置于第一個(gè)與pattern匹配的串處 |
| vim -r filename |
在上次正用vim編輯時(shí)發(fā)生系統(tǒng)崩潰,恢復(fù)filename |
| vim filename….filename |
打開多個(gè)文件,依次編輯 |
vim配置
| 命令 |
描述 |
| all |
列出所有選項(xiàng)設(shè)置情況 |
| term |
設(shè)置終端類型 |
| ignorance |
在搜索中忽略大小寫 |
| list |
顯示制表位(Ctrl+I)和行尾標(biāo)志($) |
| number |
顯示行號(hào) |
| report |
顯示由面向行的命令修改過的數(shù)目 |
| terse |
顯示簡(jiǎn)短的警告信息 |
| warn |
在轉(zhuǎn)到別的文件時(shí)若沒保存當(dāng)前文件則顯示NO write信息 |
| nomagic |
允許在搜索模式中,使用前面不帶“\”的特殊字符 |
| nowrapscan |
禁止vi在搜索到達(dá)文件兩端時(shí),又從另一端開始 |
| mesg |
允許vi顯示其他用戶用write寫到自己終端上的信息 |
| :set number / set nonumber |
顯示/不顯示行號(hào) |
| :set ruler /set noruler |
顯示/不顯示標(biāo)尺 |
| :set hlsearch |
高亮顯示查找到的單詞 |
| :set nohlsearch |
關(guān)閉高亮顯示 |
| :syntax on |
語(yǔ)法高亮 |
| :set nu |
顯示行號(hào) |
| :set tabstop=8 |
設(shè)置tab大小,8為最常用最普遍的設(shè)置 |
| :set softtabstop=8 |
4:4個(gè)空格,8:正常的制表符,12:一個(gè)制表符4個(gè)空格,16:兩個(gè)制表符 |
| :set autoindent |
自動(dòng)縮進(jìn) |
| :set cindent |
C語(yǔ)言格式里面的自動(dòng)縮進(jìn) |
移動(dòng)光標(biāo)
| 命令 |
描述 |
| k nk |
上 向上移動(dòng)n行 |
| j nj |
下 向下移動(dòng)n行 |
| h nh |
左 向左移動(dòng)n行 |
| l nl |
右 向右移動(dòng)n行 |
| Space |
光標(biāo)右移一個(gè)字符 |
| Backspace |
光標(biāo)左移一個(gè)字符 |
| Enter |
光標(biāo)下移一行 |
| w/W |
光標(biāo)右移一個(gè)字至字首 |
| b/B |
光標(biāo)左移一個(gè)字至字首 |
| e或E |
光標(biāo)右移一個(gè)字至字尾 |
| ) |
光標(biāo)移至句尾 |
| ( |
光標(biāo)移至句首 |
| } |
光標(biāo)移至段落開頭 |
| { |
光標(biāo)移至段落結(jié)尾 |
| n$ |
光標(biāo)移至第n行尾 |
| H |
光標(biāo)移至屏幕頂行 |
| M |
光標(biāo)移至屏幕中間行 |
| L |
光標(biāo)移至屏幕最后行 |
| 0 |
(注意是數(shù)字零)光標(biāo)移至當(dāng)前行首 |
| ^ |
移動(dòng)光標(biāo)到行首第一個(gè)非空字符上去 |
| $ |
光標(biāo)移至當(dāng)前行尾 |
| gg |
移到第一行 |
| G |
移到最后一行 |
| f |
移動(dòng)光標(biāo)到當(dāng)前行的字符a上 |
| F |
相反 |
| % |
移動(dòng)到與制匹配的括號(hào)上去(),{},[],<>等 |
| nG |
移動(dòng)到第n行上 |
| G |
到最后一行 |
屏幕滾動(dòng)
| 命令 |
描述 |
| Ctrl+u |
向文件首翻半屏 |
| Ctrl+d |
向文件尾翻半屏 |
| Ctrl+f |
向文件尾翻一屏 |
| Ctrl+b |
向文件首翻一屏 |
| nz |
將第n行滾至屏幕頂部,不指定n時(shí)將當(dāng)前行滾至屏幕頂部 |
插入文本類
| 命令 |
描述 |
| i |
在光標(biāo)前 |
| I |
在當(dāng)前行首 |
| a |
光標(biāo)后 |
| A |
在當(dāng)前行尾 |
| o |
在當(dāng)前行之下新開一行 |
| O |
在當(dāng)前行之上新開一行 |
| r |
替換當(dāng)前字符 |
| R |
替換當(dāng)前字符及其后的字符,直至按ESC鍵 |
| s |
從當(dāng)前光標(biāo)位置處開始,以輸入的文本替代指定數(shù)目的字符 |
| S |
刪除指定數(shù)目的行,并以所輸入文本代替之 |
| ncw/nCW |
修改指定數(shù)目的字 |
| nCC |
修改指定數(shù)目的行 |
刪除命令
| 命令 |
描述 |
| x/X |
刪除一個(gè)字符,x刪除光標(biāo)后的,而X刪除光標(biāo)前的 |
| dw |
刪除一個(gè)單詞(刪除光標(biāo)位置到下一個(gè)單詞開始的位置) |
| dnw |
刪除n個(gè)單詞 |
| dne |
也可,只是刪除到單詞尾 |
| do |
刪至行首 |
| d$ |
刪至行尾 |
| dd |
刪除一行 |
| ndd |
刪除當(dāng)前行及其后n-1行 |
| dnl |
向右刪除n個(gè)字母 |
| dnh |
向左刪除n個(gè)字母 |
| dnj |
向下刪除n行,當(dāng)前行+其上n行 |
| dnk |
向上刪除n行,當(dāng)期行+其下n行 |
| cnw[word] |
將n個(gè)word改變?yōu)閣ord |
| C$ |
改變到行尾 |
| cc |
改變整行 |
| shift+j |
刪除行尾的換行符,下一行接上來了 |
復(fù)制粘貼
| 命令 |
描述 |
| p |
粘貼用x或d刪除的文本 |
| ynw |
復(fù)制n個(gè)單詞 |
| yy |
復(fù)制一行 |
| ynl |
復(fù)制n個(gè)字符 |
| y$ |
復(fù)制當(dāng)前光標(biāo)至行尾處 |
| nyy |
拷貝n行 |
撤銷
| 命令 |
描述 |
| u |
撤銷前一次的操作 |
| shif+u(U) |
撤銷對(duì)該行的所有操作 |
搜索及替換
| 命令 |
描述 |
| /pattern |
從光標(biāo)開始處向文件尾搜索pattern |
| ?pattern |
從光標(biāo)開始處向文件首搜索pattern |
| n |
在同一方向重復(fù)上一次搜索命令 |
| N |
在反方向上重復(fù)上一次搜索命令 |
| cw newword |
替換為newword |
| n |
繼續(xù)查找 |
| . |
執(zhí)行替換 |
| :s/p1/p2/g |
將當(dāng)前行中所有p1均用p2替代,g表示執(zhí)行 用c表示需要確認(rèn) |
| :n1,n2 s/p1/p2/g |
將第n1至n2行中所有p1均用p2替代 |
| :g/p1/s//p2/g |
將文件中所有p1均用p2替換 |
| :1,$ s/string1/string2/g |
在全文中將string1替換為string2 |
書簽
| 命令 |
描述 |
| m[a-z] |
在文中做標(biāo)記,標(biāo)記號(hào)可為a-z的26個(gè)字母 |
| `a |
移動(dòng)到標(biāo)記a處 |
visual模式
| 命令 |
描述 |
| v |
進(jìn)入visual 模式 |
| V |
進(jìn)入行的visual 模式 |
| ctrl+v |
進(jìn)如塊操作模式用o和O改變選擇的邊的大小 |
| 在所有行插入相同的內(nèi)容如include< |
將光標(biāo)移到開始插入的位置,按CTRL+V進(jìn)入VISUAL模式,選擇好模塊后按I(shift+i),后插入要插入的文本,按[ESC]完成 |
行方式命令
| 命令 |
描述 |
| :n1,n2 co n3 |
將n1行到n2行之間的內(nèi)容拷貝到第n3行下 |
| :n1,n2 m n3 |
將n1行到n2行之間的內(nèi)容移至到第n3行下 |
| :n1,n2 d |
將n1行到n2行之間的內(nèi)容刪除 |
| :n1,n2 w!command |
將文件中n1行至n2行的內(nèi)容作為command的輸入并執(zhí)行之 |
| 若不指定n1,n2,則表示將整個(gè)文件內(nèi)容作為command的輸入 |
宏
| 命令 |
描述 |
| q[a-z] |
開始記錄但前開始的操作為宏,名稱可為【a-z】,然后用q終止錄制宏 |
| reg |
顯示當(dāng)前定義的所有的宏,用@[a-z]來在當(dāng)前光標(biāo)處執(zhí)行宏[a-z] |
窗口操作
| 命令 |
描述 |
| :split |
分割一個(gè)窗口 |
| :split file.c |
為另一個(gè)文件file.c分隔窗口 |
| :nsplit file.c |
為另一個(gè)文件file.c分隔窗口,并指定其行數(shù) |
| ctrl+w |
在窗口中切換 |
| :close |
關(guān)閉當(dāng)前窗口 |
文件及其他
| 命令 |
描述 |
| :q |
退出vi |
| :q! |
不保存文件并退出vi |
| :e filename |
打開文件filename進(jìn)行編輯 |
| :e! |
放棄修改文件內(nèi)容,重新載入該文件編輯 |
| :w |
保存當(dāng)前文件 |
| :wq |
存盤退出 |
| :ZZ |
保存當(dāng)前文檔并退出VIM |
| :!command |
執(zhí)行shell命令command |
| :r!command |
將命令command的輸出結(jié)果放到當(dāng)前行 |
| :n1,n2 write temp.c |
|
| :read file.c |
將文件file.c的內(nèi)容插入到當(dāng)前光標(biāo)所在的下面 |
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。