入職有一段時(shí)間了,在公司里用的最多的就是Linux服務(wù)器開發(fā),所以平時(shí)在服務(wù)器上做一些編程的話會(huì)用到vim,之前也接觸過,沒有發(fā)現(xiàn)過vim的好,現(xiàn)在慢慢接觸多了,才發(fā)現(xiàn)真的是神器,所以也跟大家分享一下自己的心得。
vim最方便的地方在于可以通過vimrc這個(gè)配置文件來設(shè)置很多格式或者快捷鍵。那我們先從最基本的開始看吧:
? ? 1. 打開文件:vim [filename]
????????如果文件存在就直接打開,如果文件不存在,它將為你建立一個(gè)新文件。Vim編輯程序有三種模式,編輯模式、插入模式和命令模式,按i鍵進(jìn)入編輯模式,esc進(jìn)入命令模式,按下:wq保存并且退出。當(dāng)完成所有的編輯工作后,需要保存編輯器結(jié)果,退出編輯程序回到終端,可以發(fā)出ZZ命令,連續(xù)按兩次大寫的Z鍵。
????2. 編輯模式
? ? ? ? ?(1):一般模式下的按鍵說明:
? ? ? ? ? ? ? ? ? h 向左移動(dòng)
? ? ? ? ? ? ? ? ? j 向下移動(dòng)
? ? ? ? ? ? ? ? ? k 向上移動(dòng)
? ? ? ? ? ? ? ? ? l 向右移動(dòng)
? ? ? ? ? ? ? ? ?CTRL f 向下移動(dòng)一頁
? ? ? ? ? ? ? ? ?CTRL b向上移動(dòng)一頁
? ? ? ? ? ? ? ? ?CTRL d 向下移動(dòng)半頁
? ? ? ? ? ? ? ? ?CTRL u 向上移動(dòng)半頁
? ? ? ? ? (2) 單行刪除,:1(待刪除行)d
?? ??? ??? ??? ??? ?多行刪除 ,:1,10d
?? ??? ??? ??? ?? ??法二:
?? ??? ??? ??? ??? ?光標(biāo)所在行,dd
?? ??? ??? ??? ??? ?光標(biāo)所在行以下的N行,Ndd
????3.查找模式:/
? ? ? ? 符號/后面跟一個(gè)字符串,vim將會(huì)返回這個(gè)詞第一次出現(xiàn)的位置,?后面跟一個(gè)字符串,vim將會(huì)返回這個(gè)字符串最后一次出現(xiàn)的位置。按下n查找下一個(gè),按下N查找上一個(gè)。?Vim查找支持正則表達(dá)式,例如/vim$匹配行尾的"vim"。 需要查找特殊字符需要轉(zhuǎn)義,例如/vim\$匹配"vim$"。
????4.visual模式:v
????????按v進(jìn)入visual狀態(tài),按箭頭上下可以選擇多行,再用>或<縮進(jìn)或縮出,這里縮進(jìn)或縮出的距離可以在vimrc文件里設(shè)置,詳見本文第7條;按d可以剪切,按y復(fù)制,按p粘貼。
????5.重載文件命令 :e
? ? ? ? 用”:e“命令可以重新載入文件。
????6.替換 :s/待替換詞/替換詞/g
? ? ? ? 命令里的:不可少。g是個(gè)參數(shù),使用g的話是將當(dāng)前行所有的替換,不加g就是只替換一次。用這個(gè)命令可以實(shí)現(xiàn)替換字符串,比如 ”:/city/dream/g“,就可以將當(dāng)前行中所有的city替換為dream。補(bǔ)充一點(diǎn)是,當(dāng)s前面加上%,那也就是替換每行的,比如":%s/city/dream/g"的意思就是將每一行的city替換為dream。
????7.關(guān)于縮進(jìn):
????????縮進(jìn)用 tab 制表符還是空格,個(gè)人愛好問題。但是在大多項(xiàng)目中,習(xí)慣使用空格。關(guān)于縮進(jìn),vim中可以通過如下四個(gè)參數(shù)進(jìn)行配置
????????set tabstop=4?
????????set softtabstop=4?
????????set shiftwidth=4?
????????set noexpandtab / expandtab
這四個(gè)參數(shù)的含義分別是:
????tabstop,表示按一個(gè)tab之后,顯示出來的相當(dāng)于幾個(gè)空格,默認(rèn)的是8個(gè)。
?? ?softtabstop,表示在編輯模式的時(shí)候按退格鍵的時(shí)候退回縮進(jìn)的長度。
?? ?shiftwidth,表示每一級縮進(jìn)的長度,一般設(shè)置成跟 softtabstop 一樣
?? ?expandtab與noexpandtab,當(dāng)設(shè)置成 expandtab 時(shí),縮進(jìn)用空格來表示,noexpandtab 則是用制表符表示一個(gè)縮進(jìn)。
????8. 代碼自動(dòng)對齊功能:
? ? ? ?這個(gè)常見于從別的地方復(fù)制文本到vim里,代碼會(huì)發(fā)生縮進(jìn)異常。具體操作是,在命令模式下(即非“插入”等編輯模式),先輸入gg,這時(shí)候光標(biāo)會(huì)移動(dòng)到第一行第一個(gè)字符,然后按 “=” 號之后切換成大寫,再按一? 下G,這時(shí)候光標(biāo)會(huì)移到最后一行的第一個(gè)字符,這時(shí)候就可以看到代碼被排得整整齊齊了!當(dāng)然這個(gè)有時(shí)候不一定能奏效,還有另外一種推薦是在 ~/.vimrc 里加入如下內(nèi)容:
? ??????set clipboard=unnamed或者set clipboard=unnamedplus
然后只需在普通模式下按 p 即可把系統(tǒng)緩沖區(qū)中的內(nèi)容粘帖到 Vim 中,就像粘帖用 yy 命令得到的內(nèi)容一樣,并且格式不錯(cuò)亂。
? ? ? ? 如果有錯(cuò)誤請大家多多留言指出?。∥乙矔?huì)在后續(xù)繼續(xù)積累vim更多的用法,希望跟大家分享!