你可能不知道的Vim使用小技巧
一、用拷貝的內(nèi)容替換
當(dāng)發(fā)生拼寫錯(cuò)誤或者想要重命名標(biāo)識(shí)符時(shí),就需要用拷貝的內(nèi)容來(lái)替換當(dāng)前的名字。比如調(diào)用函數(shù)時(shí)寫錯(cuò)了:
void letus_fuckit_with_vim(){ cout<<"great!"; } let_fuckat_with_vom();
只需要先復(fù)制上面的函數(shù)名,再把光標(biāo)切換到拼錯(cuò)的詞首。然后按下viwp,就替換過(guò)來(lái)了:
void letus_fuckit_with_vim(){ cout<<"great!"; } letus_fuckit_with_vim();
v進(jìn)入可視模式,然后iw來(lái)選擇光標(biāo)所在單詞,最后按下p來(lái)粘貼。iw表示inner word
,有用的搭配還有yiw, ciw等。
二、拷貝整個(gè)文件
當(dāng)我們剛開始使用Vim時(shí),大神會(huì)告訴我們?nèi)绾慰截愓麄€(gè)文件:ggvGy, NB一點(diǎn)的大神會(huì)告訴我們:ggyG?,F(xiàn)在告訴大家:
:%y
三、暫時(shí)離開插入模式
當(dāng)我們處在insert
模式時(shí),有時(shí)會(huì)希望在normal模式下執(zhí)行某個(gè)命令再馬上回到insert
模式。 可能需要先按下<Esc>,執(zhí)行命令,再按下i。
Vim為此提供了方便:
當(dāng)我們需要暫時(shí)離開insert模式并執(zhí)行一個(gè)命令時(shí),可以按下<c-o>
執(zhí)行完后續(xù)命令后Vim自動(dòng)回到insert模式。
例如:
:map <F5> :! g++ % && ./a.out <CR> :imap <F5> <c-o><F5>
四、字符查找
Vim光標(biāo)跳轉(zhuǎn)雖然有數(shù)十種快捷鍵,但你有沒(méi)有發(fā)現(xiàn)當(dāng)我們碰到長(zhǎng)單詞時(shí)會(huì)很無(wú)力,比如我想把下面的description替換為keywords:
tmystr_meta_description
是不是要不斷地敲l(或者敲幾次{num}l),其實(shí)可以用單詞查找功能。只需要輸入fd便可以查找當(dāng)前行的下一個(gè)字母d。大寫的F可以反向查找。
五、搜索當(dāng)前詞
按下*即可搜索當(dāng)前光標(biāo)所在的詞(word),再次按下搜索下一個(gè)。 按下#搜索上一個(gè)。
*只匹配出現(xiàn)的單詞,對(duì)于中文沒(méi)有斷字。如果查找當(dāng)前詞的所有字串,可以使用g*。
六、命令模式粘貼
如果希望全局查找替換當(dāng)前光標(biāo)所在的單詞,我們可能需要手動(dòng)地在命令模式下敲出來(lái): %s/foo/bar/g
。 但如果當(dāng)前光標(biāo)就在那個(gè)單詞上的話,可以在敲完%s/之后將它粘貼到命令里:
<Ctrl+R> <Ctrl+W>
這是命令模式的<Ctrl+R>工具,用法還包括粘貼當(dāng)前文件路徑: <Ctrl+R>%
。 更多用法請(qǐng)查看幫助: :help c_CTRL-R
。
七、段落跳轉(zhuǎn)
這個(gè)對(duì)中文用戶幾乎無(wú)用,但我們?cè)诰庉嫶a文件時(shí)會(huì)很有用。()可以調(diào)到句首句尾,{}可以調(diào)到段首段尾。
八、選區(qū)頭尾跳轉(zhuǎn)
Emmet插件可以進(jìn)行HTML的標(biāo)簽匹配,你按下<c-y>d當(dāng)前標(biāo)簽首尾之間被選中。你想調(diào)到選中區(qū)域的尾部怎么辦? 按下o即可切換收尾,再次按下v就能回到Normal模式。
有木有特別想在匹配的括號(hào)間跳轉(zhuǎn)!按下%!
九、原生自動(dòng)補(bǔ)全
如果你沒(méi)有使用任何Vim插件,Vim的自動(dòng)補(bǔ)全是默認(rèn)關(guān)閉的。在不引入插件的情況下Vim也可以啟用強(qiáng)大的自動(dòng)補(bǔ)全,只需要設(shè)置:
filetype plugin on set omnifunc=syntaxcomplete#Complete
在任何時(shí)候,按下<c-x><c-o>
將會(huì)觸發(fā)自動(dòng)補(bǔ)全。
參考: http://vim.wikia.com/wiki/Omni_completion
十、用搜索來(lái)選區(qū)
當(dāng)你需要選擇一大段文字時(shí),不妨先進(jìn)入visual模式,再進(jìn)行正則搜索。例如在markdown中,選擇某個(gè)##的內(nèi)容可以這樣操作: 移動(dòng)光標(biāo)到要選中的##上,按下v進(jìn)入visual模式,輸入/^## 匹配下一個(gè)二級(jí)標(biāo)題,按下k回到上一行。
十一、拷貝當(dāng)前文件名
使用:let @"=expand("%")
可以拷貝當(dāng)前文件名,我們可以給這個(gè)命令設(shè)一個(gè)快捷鍵:
nnoremap yf :let @f=expand("%:t")<CR> nnoremap yp :let @p=expand("%:p")<CR>
其中yf拷貝當(dāng)前文件名到寄存器f,yp拷貝完整文件路徑到寄存器p。然后分別按下"fp和"pp即可粘貼。
十二、大小寫不敏感搜索
可以在模式的任何位置加入\c來(lái)進(jìn)行大小寫不敏感搜索,在任何位置加入\C來(lái)進(jìn)行大小寫敏感搜索。 可以設(shè)置set ignorecase來(lái)默認(rèn)進(jìn)行大小寫不敏感搜索,同時(shí)可以設(shè)置set smartcase: 當(dāng)模式包含大寫字母時(shí)忽略ignorecase設(shè)置。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的這些小技巧能夠?yàn)榇蠹业膶W(xué)習(xí)或者工作帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。
相關(guān)文章
Ubuntu18.04服務(wù)器密碼忘記或被篡改如何重置密碼
這篇文章主要介紹了Ubuntu18.04服務(wù)器密碼忘記或被篡改如何重置密碼,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09linux所有命令都失效顯示bash: xxxxx: command not f
這篇文章主要介紹了linux所有命令都失效顯示bash: xxxxx: command not found的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05Linux 7.4上安裝配置Oracle 11.2.0.4圖文教程
本文通過(guò)圖文并茂的形式給大家介紹了Linux 7.4上安裝配置Oracle 11.2.0.4的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-12-12linux文件管理命令實(shí)例分析【顯示、查看、統(tǒng)計(jì)等】
這篇文章主要介紹了linux文件管理命令,結(jié)合實(shí)例形式分析Linux文件管理的顯示、查看、統(tǒng)計(jì)等相關(guān)操作命令使用技巧,需要的朋友可以參考下2020-03-03VMware虛擬機(jī)安裝Centos操作系統(tǒng)的教程
這篇文章主要為大家詳細(xì)介紹了VMware虛擬機(jī)安裝Centos操作系統(tǒng)的教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07