新聞中心
這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
詳解Vim中的常用操作
Vim 是 Linux 系統(tǒng)上的最著名的文本/代碼編輯器,也是早年的 Vi 編輯器的加強(qiáng)版,本篇文章重點(diǎn)為大家講解一下Vim中的常用操作。

-
打開(kāi)關(guān)閉
-
?vim xxx,vim +num xxx 命令行打開(kāi)文件?
? vim + filename 啟動(dòng)跳到文件結(jié)尾?
? vim +143 filename 打開(kāi)跳到143行 調(diào)試代碼有用?
? vim +/search-term filename 跳到第一個(gè)匹配?
? vim +/search-term filename 跳到最后一個(gè)匹配?
? vim -t tag?
? vim —cmd command filename 加載文件前執(zhí)行命令?
? vim -c “:50” filename 加載文件后執(zhí)行命令?
? :e xxx vim中打開(kāi)文件?
? :w[rite],:up[ date],:w!,up!,:wall保存文件?
? : x,:q,:qa,:q!,退出文件?
? gf 普通模式下打開(kāi)文件名為光標(biāo)處文字的文件?
? Ctrl+W f 新窗口打開(kāi)匹配的文件?
? Ctrl+W fg 新tab頁(yè)打開(kāi)匹配的文件?
代碼相關(guān)
-
?對(duì)代碼進(jìn)行縮進(jìn)?
? >用于調(diào)整源代碼縮進(jìn)格式?
? = 用戶自動(dòng)格式化代碼縮進(jìn),gg=G 即為全文格式化?
? zf,zo,zc,za,zR,zM對(duì)代碼進(jìn)行折疊打開(kāi)折疊?
? Ctrl+],Ctrl+T查找函數(shù)的定義和返回 ?
? 大寫(xiě)K,看光標(biāo)所指標(biāo)識(shí)符的man幫助?
移動(dòng)光標(biāo)
-
?h,j,k,l ←↓↑→ 移動(dòng)光標(biāo),相當(dāng)于四個(gè)方向鍵?
? w,b,e,ge 以單詞的方式移動(dòng),可以nw,nb,ne,nge的方式移動(dòng)n個(gè)單詞的距離?
? W,B,E,gE會(huì)以連續(xù)字符串的方式移動(dòng)?
? 0,^,g_,移動(dòng)到行首,行尾以及后面第n行的行尾?
? gg,G,nG, ngg 移動(dòng)到文件頭和文件尾,以及移動(dòng)到文件的第n行,‘可以回到上一次的地方?
? H,M,L n%定位光標(biāo)到當(dāng)前屏幕的某個(gè)地方?
? {,},[[,]],(,) 段落,區(qū)塊,語(yǔ)句導(dǎo)航?
? z回車,z-,zz.當(dāng)前行置頂,置底,置中?
? Ctrl+G顯示當(dāng)前位置信息?
? Ctrl+F,Ctrl+B,Ctrl+U,Ctrl+D,Ctrl+E,Ctrl+Y,向前后滾動(dòng)一屏,半屏,一行?
? Ctrl+I,Ctrl+O 光標(biāo)移到下一次和上一次的地方,Ctrl+I 和Tab功能一樣?
? ‘,”,[,]為跳轉(zhuǎn)前的位置,最后編輯的光標(biāo)位置,最后修改的開(kāi)始位置, 最后修改的結(jié)束位置?
? Ctrl+^ 在兩個(gè)文件之間輪換?
? ‘“,’.,`.上一次光標(biāo)的地方,上一次修改的地方?
編輯
-
?i,a,o,I,A,O分別進(jìn)入插入模式?
? o 在當(dāng)前光標(biāo)所在行下方插入一行,O在當(dāng)前光標(biāo)所在行上方插入一行?
? J 刪除換行符,合并兩行?
? Ctrl-R 重做?
? u,nu撤銷上一次更改,撤銷n次更改?
? U 撤銷整行的更改?
? Ctrl+ R 重做更改?
? Ctrl+L 重新加載屏幕內(nèi)容?
? y,d,p 表示拷貝,刪除,粘貼,配置位置描述使用 yw,dw,y0,d0,y,yfa,dfa,yy,dd,D,dG,dgg等,前面可以加數(shù)字,表示重復(fù)如,3dd,3yy等,也可以加范圍,如4,8yy?
? %y+.y+,N,My+ 拷貝指定的數(shù)據(jù)?
? :[range] g[lobal[!]] /{pattern}/ [cmd]?
? :[range] v[global[!]] /{pattern}/ [cmd]?
? n,p,next,previous,Ctrl+^在編輯的文件中切換?
? :ls 查看打開(kāi)的文件?
? :e #n 打開(kāi)標(biāo)號(hào)為ls結(jié)果中的文件?
? :changes 查看文件變化?
? ga查看ASCII,十進(jìn)制,十六進(jìn)制?
查找
-
?/pattern-回車 在文件內(nèi)向后查找pattern的匹配,n重復(fù),N回退,n前面可以帶數(shù)字?
? ?pattern-回車 在文件內(nèi)向前查找pattern的匹配,n重復(fù),N回退,n前面可以帶數(shù)字?
? f{char}/t{char} 在行內(nèi)查找下一指定字符, ; 重復(fù), ,回退?
? F{char}/T{char} 在行內(nèi)查找上一指定字符, ; 重復(fù), ,回退?
?
,#高亮所有匹配光標(biāo)所在單詞,相當(dāng)于輸入了/word,如果想單獨(dú)匹配單詞/ ,則需要g ,g# ,gd提留在非注釋段的第一個(gè)匹配?
? 表示匹配單詞的開(kāi)頭和結(jié)尾?
? .,^,$在查找的過(guò)程中作為正則策略, 如果需要完全匹配需要轉(zhuǎn)義?
? % 查找匹配的括號(hào)() [] {}?
替換
-
?. 重復(fù)上次的修改(一定要是修改) 比如說(shuō)上次刪除一個(gè)字符,點(diǎn)就是刪除一個(gè)字符的意思;如果上次是刪除一行,點(diǎn)就是刪除一行的意思了。 ?
? >G 當(dāng)前行縮進(jìn)一個(gè)單位(Tab)?
? :[range]s[ubstitute]/{pattern}/{string}/[flags] 將范圍內(nèi)的from 改為to,替換當(dāng)前行?
? :[range]%s[ubstitute]/{pattern}/{string}/[flags] 將范圍內(nèi)的from 改為to,替換所有行?
? 范圍可以指定為m,n的數(shù)字形式,當(dāng)個(gè)的數(shù)字表示特定的行,.表示當(dāng)前行,如果字符串中本身包含/,則可用+,=替換原來(lái)的/?
? :[range]s[ubstitute]/{pattern}/{string}/[flags] [count]?
外部&&內(nèi)部命令替換
-
?:??shell?? 交互式shell?
? :!cmd 執(zhí)行cmd并輸出結(jié)果?
? :! 執(zhí)行上一次的命令?
? :r[ead] !cmd當(dāng)前光標(biāo)寫(xiě)入命令結(jié)果?
? :上下方向鍵 查找命令?
? :[range]co[py] {address} 復(fù)制指定范圍的行到指定地址,簡(jiǎn)寫(xiě)為t 理解為copyto?
? :[range]m[ove] {address} 移動(dòng)命令?
? :@:重復(fù)VIM命令,.重復(fù)普通命令?
? Ctrl+D補(bǔ)全命令?
? :[range] delete [x]?
? :[range] yank [x]?
? :[range] put [x]?
? :[range] copy {address} ?
? :[range] move {address}?
? :[range] normal {commands}?
? :[range] join?
? :[range] substitute/{pattern}/{string}/[flags]?
? :[range] global/{pattern}/[cmd]?
選項(xiàng)設(shè)置
-
set xxx 設(shè)置某項(xiàng)
set noxxx 取消某項(xiàng)設(shè)置
set xxx! 反置某項(xiàng)值
set xxx& 恢復(fù)默認(rèn)值
set xxx? 查詢當(dāng)前狀態(tài)+
setlocal 局部有效,set全局有效+
:set expandtab 將tab轉(zhuǎn)換為space
:set tabstop=4 制表符寬度 tabstop=4或ts=4
:retab 按照設(shè)定值重新縮進(jìn)
:set shiftwidth=4 行縮進(jìn)時(shí)寬度
:set ai 自動(dòng)縮進(jìn)
**代碼格式化
**
-
**=**全文格式化 gg=G,比如粘貼的內(nèi)容
當(dāng)前行格式化縮進(jìn) ==
當(dāng)前光標(biāo)所在行的后N行格式化 N==
選中行格式化,=
-
當(dāng)前標(biāo)題:詳解Vim中的常用操作
本文地址:http://m.fisionsoft.com.cn/article/djshiod.html


咨詢
建站咨詢
