你可能不知道的Vim使用小技巧
一、用拷貝的內(nèi)容替換
當(dāng)發(fā)生拼寫(xiě)錯(cuò)誤或者想要重命名標(biāo)識(shí)符時(shí),就需要用拷貝的內(nèi)容來(lái)替換當(dāng)前的名字。比如調(diào)用函數(shù)時(shí)寫(xiě)錯(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)我們剛開(kāi)始使用Vim時(shí),大神會(huì)告訴我們?nèi)绾慰截愓麄€(gè)文件:ggvGy, NB一點(diǎn)的大神會(huì)告訴我們:ggyG?,F(xiàn)在告訴大家:
:%y
三、暫時(shí)離開(kāi)插入模式
當(dāng)我們處在insert模式時(shí),有時(shí)會(huì)希望在normal模式下執(zhí)行某個(gè)命令再馬上回到insert模式。 可能需要先按下<Esc>,執(zhí)行命令,再按下i。
Vim為此提供了方便:
當(dāng)我們需要暫時(shí)離開(kāi)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。大寫(xiě)的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ì)中文用戶(hù)幾乎無(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即可粘貼。
十二、大小寫(xiě)不敏感搜索
可以在模式的任何位置加入\c來(lái)進(jìn)行大小寫(xiě)不敏感搜索,在任何位置加入\C來(lái)進(jìn)行大小寫(xiě)敏感搜索。 可以設(shè)置set ignorecase來(lái)默認(rèn)進(jìn)行大小寫(xiě)不敏感搜索,同時(shí)可以設(shè)置set smartcase: 當(dāng)模式包含大寫(xiě)字母時(shí)忽略ignorecase設(shè)置。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的這些小技巧能夠?yàn)榇蠹业膶W(xué)習(xí)或者工作帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。
相關(guān)文章
Linux系統(tǒng)下如何創(chuàng)建普通用戶(hù)并更改用戶(hù)組
這篇文章主要介紹了Linux系統(tǒng)下如何創(chuàng)建普通用戶(hù)并更改用戶(hù)組問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
linux環(huán)境配置nginx導(dǎo)致頁(yè)面不刷新的解決方法
這篇文章介紹了linux環(huán)境配置nginx導(dǎo)致頁(yè)面不刷新的解決方法,有需要的朋友可以參考一下2013-09-09
Windows 10 下安裝 Apache 2.4.41的教程
這篇文章主要介紹了Windows 10 下安裝 Apache 2.4.41的教程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
ROS控制Turtlebot3移動(dòng)機(jī)器人的基礎(chǔ)教程
這篇文章主要給大家介紹了關(guān)于ROS控制Turtlebot3移動(dòng)機(jī)器人的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Linux使用其他用戶(hù)(非root用戶(hù))設(shè)置root權(quán)限及免密(Centos7為例)
這篇文章主要介紹了Linux使用其他用戶(hù)(非root用戶(hù))設(shè)置root權(quán)限及免密(Centos7為例),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
詳解Linux驅(qū)動(dòng)中,probe函數(shù)何時(shí)被調(diào)用
這篇文章主要介紹了詳解Linux驅(qū)動(dòng)中,probe函數(shù)何時(shí)被調(diào)用 ,具有一定的參考價(jià)值,有興趣的同學(xué)可以了解一下。2016-12-12

