W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
上一章中我們談?wù)摿巳绾卧赩im中映射按鍵。我們使用的命令map
在normal模式下工作。 如果閱讀本章之前你自己已經(jīng)折騰了,可能會(huì)注意到這個(gè)映射在visual模式一樣工作。
你可以使用nmap
、vmap
和imap
命令分別指定映射僅在normal、visual、insert模式有效。
執(zhí)行如下命令:
:nmap \ dd
在normal模式下,按下\
。Vim會(huì)刪除當(dāng)前行。
現(xiàn)在進(jìn)入Visual模式,再次按下\
。什么都不會(huì)發(fā)生,因?yàn)槲覀兏嬖V了Vim這個(gè)映射僅在normal 模式下工作(同時(shí)\
的默認(rèn)行為是什么都不做)。
運(yùn)行如下命令:
:vmap \ U
進(jìn)入visual模式并選中一些文字,按下\
。Vim將把選中文本轉(zhuǎn)換成大寫格式。
分別在normal模式和visual模式測試\
按鍵,注意不同模式下的效應(yīng)。
起初,將同樣的按鍵根據(jù)當(dāng)前模式的不同映射到不同的功能聽起來很可怕。為什么每次按下 那個(gè)鍵之前都要停下想想我們現(xiàn)在是在什么模式?那樣是不是更浪費(fèi)時(shí)間?
實(shí)踐中我們發(fā)現(xiàn)那真不是個(gè)問題。一旦你經(jīng)常使用Vim,你就不會(huì)在意你按下的鍵了。 你會(huì)想“刪除一行”,而不是“按`dd·”。你的手指和大腦都會(huì)記住你的映射,潛意識(shí)中你就會(huì) 按下那些映射按鍵。
現(xiàn)在我們已經(jīng)知道如何在normal模式和visual模式下映射按鍵?,F(xiàn)在我們談?wù)刬nsert模式下的 映射方法。運(yùn)行如下命令:
:imap <c-d> dd
你可能猜想這個(gè)命令的作用是在insert模式下通過按鍵Ctrl+d
刪除整行。這個(gè)映射很實(shí)用, 因?yàn)槟悴槐孛看味家獮榱藙h除某些行而切回到normal模式。
好的我們試一下。它并不如我們想象那般工作,而僅僅是在文件中添加了兩個(gè)d
字符! 它壓根就沒用。
問題就在于Vim只按我們說的做。這個(gè)例子中,我們說:“當(dāng)我按下<c-d>
時(shí),相當(dāng)于我 按了兩次d
”。而當(dāng)你在insert模式下,按下兩次d
的作用就是輸入兩個(gè)字符d
。
要想讓這個(gè)映射按我們的期望執(zhí)行,我們需要更加明確的指令。修改映射并運(yùn)行如下命令:
:imap <c-d> <esc>dd
<esc>
告訴Vim按下ESC按鍵,即退出insert模式。
現(xiàn)在再試試這個(gè)映射。它能夠正常工作,但是注意你是如何回到normal模式的。這是因?yàn)槲覀?告訴Vim<c-d>
要退出insert模式并刪除一行,但是我們沒有告訴它再回到insert模式。
運(yùn)行如下命令,修復(fù)映射問題:
:imap <c-d> <esc>ddi
結(jié)尾的i
告訴Vim進(jìn)入insert模式,至此我們的映射才最終完成。
設(shè)置一個(gè)映射,當(dāng)你在insert模式時(shí),可以通過按下<c-u>
將當(dāng)前光標(biāo)所在的單詞轉(zhuǎn)換成 大寫格式。每次我寫一個(gè)類似MAX_CONNECTIONS_ALLOWED
這樣很長的常量時(shí)都能感覺到這個(gè) 映射的實(shí)用性。因?yàn)檫@樣我就可以以小寫的格式敲寫常量,然后用這個(gè)映射將其轉(zhuǎn)成大寫, 不必一直需要按著shift鍵。
將那個(gè)映射添加上到你的~/.vimrc
文件中。
設(shè)置一個(gè)映射,當(dāng)你在?normal?模式時(shí),可以通過按下<c-u>
將當(dāng)前光標(biāo)所在的單詞轉(zhuǎn)換成 大寫格式。這個(gè)映射和上面那個(gè)有點(diǎn)區(qū)別,因?yàn)槟惚仨氁M(jìn)入normal模式,也不需要結(jié)束時(shí) 切到insert模式。
將那個(gè)映射添加上到你的~/.vimrc
文件中。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: