vim是一款強(qiáng)大的命令行編輯器。
1.進(jìn)入vim
| 指令 |
操作 |
| vim file |
打開或新建文件 |
| vim +n file |
打開文件,光標(biāo)定位到第n行 |
| vim + file |
打開文件,光標(biāo)定位到最后一行 |
| vim +/PATTERN file |
打開文件,光標(biāo)定位到第一個(gè)被PATTERN匹配到的行的行首 |
| vim -r file |
恢復(fù)上次使用vim時(shí)崩潰的文件 |
| vim file1 file2 ... |
打開多個(gè)文件 |
2.vim工作模式
2.1 普通模式 Normal
打開vim編輯器模式進(jìn)入命令模式,命令模式下可以進(jìn)行光標(biāo)移動(dòng)、復(fù)制、剪切、刪除、粘貼、撤銷等一系列文本操作。
從其它模式切換到命令模式,可以使用ESC鍵。
2.1.1 光標(biāo)移動(dòng)
| 指令 |
操作 |
| j、k、h、l |
上、下、左、右 |
| w、nw、W、nW |
下1/n個(gè)單詞詞首(大寫時(shí)忽略符號(hào)) |
| control+f |
向前(下)翻頁 |
| control+b |
向后(上)翻頁 |
| control+d |
向前翻半頁 |
| control+u |
向后翻半頁 |
| gg、G |
前往第一行、最后一行 |
| ngg、nG |
前往第n行 |
| H、M、L |
前往屏幕可見范圍內(nèi)最高行、中間行、最低行 |
| nH、nL |
前往屏幕可見范圍內(nèi)第n行、倒數(shù)第n行 |
| ^、$、0 |
行首(不含空白)、行尾、行首(含空白) |
| zz、zt、zb |
移動(dòng)屏幕,使光標(biāo)所在行處于中間、頂部、底部 |
| fx、Fx |
將光標(biāo)移動(dòng)至本行下一個(gè)/上一個(gè)x處 |
| control+o |
將光標(biāo)移動(dòng)到較舊的歷史位置 |
| control+i |
將光標(biāo)移動(dòng)到較新的歷史位置 |
2.1.2 刪除、剪切、復(fù)制
x - 按字符刪除/剪切
d - 按行刪除/剪切
| 指令 |
操作 |
| x、nx |
剪切光標(biāo)起始處的1個(gè)、n個(gè)字符 |
| d$ |
刪除/剪切光標(biāo)至行末 |
| d^ |
刪除/剪切光標(biāo)至行首(不包括行首空白 ) |
| d0 |
刪除/剪切光標(biāo)至行首(包括行首空白) |
| dw |
刪除/剪切光標(biāo)至詞尾(包括空格) |
| de |
刪除/剪切光標(biāo)至詞尾(不包括空格) |
| db |
刪除/剪切光標(biāo)至詞首 |
| dd |
刪除/剪切光標(biāo)所在處的行 |
| ndd |
刪除/剪切光標(biāo)所處的行起始的共n行 |
| c |
c指令 = d指令 + i(刪除 + 進(jìn)入INSERT模式) |
| y |
y指令類似d指令,只不過刪除/剪切動(dòng)作替換為復(fù)制 |
| "ay、"by、"cy... |
復(fù)制內(nèi)容到a、b、c剪切板(緩沖區(qū))) |
2.1.3 替換字符
| 指令 |
操作 |
| r、nr |
將光標(biāo)所在處的1個(gè)、n個(gè)字符替換成下次鍵盤輸入的字符 |
2.1.4 粘貼緩沖區(qū)的內(nèi)容
p(小寫):緩沖區(qū)中的內(nèi)容如果為整行,則粘貼在當(dāng)前光標(biāo)所在行的下方;否則,則粘貼至當(dāng)前光標(biāo)所在處的后方;
P(大寫):緩沖區(qū)中的內(nèi)容如果為整行,則粘貼在當(dāng)前光標(biāo)所在行的上方;否則,則粘貼至當(dāng)前光標(biāo)所在處的前方;
"ap/"aP、"bp/"bP、"cp/"cP...:從a、b、c...剪切板(緩沖區(qū))粘貼內(nèi)容;
2.1.5 縮進(jìn)與格式化
| 指令 |
操作 |
| >> |
光標(biāo)所在行向右縮進(jìn) |
| << |
光標(biāo)所在行向左縮進(jìn) |
| VISUAL模式下,選取行,按= |
格式化所選行,自動(dòng)處理縮進(jìn) |
2.1.6 undo & redo
| 指令 |
操作 |
| u、nu |
undo,撤銷此前的1個(gè)、n個(gè)操作 |
| U |
撤銷一行中的所有操作 |
| control+r |
redo |
2.1.7 重復(fù)執(zhí)行
| 指令 |
操作 |
| . |
重復(fù)執(zhí)行上一次操作 |
2.2 輸入模式 Insert
從命令模式進(jìn)入輸入模式可以使用i、a、o、I、A、O6個(gè)指令。
| 指令 |
操作 |
| i |
insert,在光標(biāo)所在處輸入 |
| a |
append,在光標(biāo)所在處后方輸入 |
| o |
在光標(biāo)所在處的下方打開一個(gè)新行 |
| I |
在光標(biāo)所在行的行首輸入 |
| A |
在光標(biāo)所在行的行尾輸入 |
| O |
在光標(biāo)所在處的上方打開一個(gè)新行 |
2.3 可視化模式 Visual
| 指令 |
操作 |
| v |
按字符選定 |
| V |
VISUAL LINE 按行選定 |
| Ctrl + v |
VISUAL BLOCK 按列選定 |
- 進(jìn)入VISUAL模式后,可以結(jié)合命令模式下的光標(biāo)移動(dòng)操作選定內(nèi)容;
- 選定內(nèi)容后,可以再使用d(刪除)、c(刪除并進(jìn)入INSERT模式)、y(復(fù)制)等指令。
2.4 命令模式 Command
末行模式提供了VIM內(nèi)建的命令行接口,可以對(duì)文本進(jìn)行查找、替換,設(shè)置vim編輯環(huán)境,保存和退出文件。
2.4.1 退出vim
| 指令 |
操作 |
| :q |
直接退出 |
| :q! |
強(qiáng)制退出 |
| :wq |
保存并退出 |
| :wq! |
強(qiáng)制保存并退出 |
2.4.2 末行命令限定
- 末行命令限定即在限定命令在指定的行執(zhí)行,也可以單獨(dú)使用來移動(dòng)光標(biāo)。
| 指令 |
操作 |
| :n |
特定的第n行,例如:5即第5行 |
| :. |
當(dāng)前行 |
| :$ |
最后一行 |
| :m,n |
從第m行到第n行 |
| :% |
全文,同:1,$ |
| :/pattern/ |
從光標(biāo)所在處起始向文件尾部第一次被模式所匹配到的行 |
| :/pat1/,/pat2/ |
從光標(biāo)所在處起始,第一次由pat1匹配到的行開始,至第一次由pat2匹配到的行結(jié)束之間的所有行 |
2.4.3 查找
- 查找到匹配結(jié)果后,可以使用n將光標(biāo)移到下一個(gè)匹配項(xiàng),N移到上一個(gè)匹配項(xiàng)
| 指令 |
操作 |
| /PATTERN |
從當(dāng)前光標(biāo)所在處向文件尾部查找能夠被當(dāng)前模式匹配到的所有字符串 |
| ?PATTERN |
從當(dāng)前光標(biāo)所在處向文件首部查找能夠被當(dāng)前模式匹配到的所有字符串 |
| :/str |
正向搜索,將光標(biāo)移動(dòng)到下方第一個(gè)包含str的行 |
| :?str |
反向搜索,將光標(biāo)移動(dòng)到上方第一個(gè)包含str的行 |
2.4.4 替換 s
- 命令后選項(xiàng):g 單行內(nèi)所有匹配項(xiàng)、 i 忽略大小寫、c 確認(rèn)是否替換
- 關(guān)鍵詞 old 替換為 new
- 分隔符/可以換成其它非常用字符,如@#等
| 指令 |
操作 |
| :s/old/new |
將光標(biāo)所在行第一個(gè) old 替換為 new |
| :s/old/new/g |
將光標(biāo)所在行所有 old 替換為 new |
| :%s/old/new/gc |
全文執(zhí)行替換,詢問是否替換 |
| :3,10s/old/new/gic |
將第3行到第10行內(nèi)容替換,忽略大小寫,且每個(gè)詢問是否替換 |
2.4.5 獲取幫助
| 指令 |
操作 |
| :help |
查看幫助全文 |
| :help subject |
查看特定幫助 |
2.4.6 其它操作
2.4.7 執(zhí)行shell命令
| 指令 |
操作 |
| :!commond |
末行模式下還可以不退出vim |
2.4.8 設(shè)置vim工作特性
- 在末行模式下的設(shè)定,僅對(duì)當(dāng)前vim進(jìn)程有效;如果希望永久有效,可以修改/etc/vimrc(全局)、~/.vimrc(個(gè)人)。
| 指令 |
操作 |
| :set number, set nu |
顯示行號(hào) |
| :set nomber, set nonu |
隱藏行號(hào) |
| :set ai |
啟用自動(dòng)縮進(jìn) |
| :set noai |
禁用自動(dòng)縮進(jìn) |
| :set hlsearch |
啟用搜索高亮 |
| :set nohlsearch |
禁用搜索高亮 |
| :syntax on |
啟用語法高亮 |
| :syntax off |
禁用語法高亮 |
| :set ic |
啟用忽略字符大小寫 |
| :set noic |
禁用忽略字符大小寫 |
3.多文件操作
vim FILE1 FILE2 ...
在文件間切換:
:next 下一個(gè)
:prev 上一個(gè)
:first 第一個(gè)
:last 最后一個(gè)
退出所有文件:
:wqall 保存所有文件并退出;
:wall 保存所有文件
:qall 退出所有文件
4.多窗口操作
vim除了可以同時(shí)編輯多個(gè)文件,還可以以多個(gè)窗口打開文件
| 指令 |
操作 |
| vim -o file1 file2 file3 ... |
橫向分隔窗口打開多個(gè)文件 |
| vim -O file1 file2 file3 ... |
縱向分隔窗口打開多個(gè)文件 |
| vim -p file1 file2 file3 ... |
以tab標(biāo)簽頁的方式打開多個(gè)文件 |
| :e file |
在vim窗口中打開新的文件 |
| :new file |
縱向分割窗口并打開新文件,不指定文件時(shí)打開空白文件 |
| :vnew file |
橫向分割窗口并打開新文件,不指定文件時(shí)打開空白文件 |
| :tabe、:tabnew |
在新的tab頁打開文件 |
| gt、gT |
在tab頁之間進(jìn)行切換 |
| control+w, w/h/j/k/l |
在分割的窗口切換 |
| control+w, s/v |
將當(dāng)前窗口的文件分割顯示 |
vim自帶的練習(xí)教程:vimtutor
最后編輯于 :
?著作權(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ù)。