W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
迄今為止我們已經(jīng)說了很多mappings的內(nèi)容,但現(xiàn)在我們要再次實(shí)踐一下。mappings是 使得Vim編輯更為高效的方便快捷途徑之一,有必要多加用心。
有個(gè)概念在多個(gè)例子中出現(xiàn)過,但是我們都沒有明確解釋,那就是多字符mappings的連續(xù)性。
運(yùn)行如下命令:
:nnoremap jk dd
確保你出于normal模式,快速輸入jk
。Vim會刪除當(dāng)前行。
現(xiàn)在試試先輸入j
,停頓一下。如果你輸入j
后沒有快速輸入k
,Vim就會判定你不想 生效那個(gè)映射,而是將j
按默認(rèn)操作運(yùn)行(下移一行)。
這個(gè)映射會給光標(biāo)移動操作帶來麻煩,我們先刪除它。運(yùn)行下面的命令:
:nunmap jk
現(xiàn)在normal模式下快速輸入jk
會像往常一樣下移一行然后又上移一行。
你已經(jīng)見過很多簡單的mappings了,是時(shí)候看看一些復(fù)雜的了。運(yùn)行下面的命令:
:nnoremap <leader>" viw<esc>a"<esc>hbi"<esc>lel
那是一個(gè)有趣的mappings!你自己可以先試試。進(jìn)入normal模式,移動光標(biāo)至一個(gè)單詞, 輸入<leader>"
。Vim將那個(gè)單詞用雙引號包圍!
它是如何工作的呢?我們拆分這個(gè)映射并逐個(gè)解釋:
viw<esc>a"<esc>hbi"<esc>lel
viw
: 高亮選中單詞<esc>
: 退出visual模式,此時(shí)光標(biāo)會在單詞的最后一個(gè)字符上a
: 移動光標(biāo)至當(dāng)前位置之 后 并進(jìn)入insert模式"
: 插入一個(gè)"
<esc>
: 返回到normal模式h
: 左移一個(gè)字符b
: 移動光標(biāo)至單詞頭部i
: 移動光標(biāo)至當(dāng)前位置之 前 并進(jìn)入insert模式"
: 插入一個(gè)"
<esc>
: 返回到normal模式l
: 右移一個(gè)字符,光標(biāo)置于單詞的頭部e
: 移動光標(biāo)至單詞尾部l
: 右移一個(gè)字符,置光標(biāo)位置在第一個(gè)添加的引號上記住:因?yàn)槲覀兪褂玫氖?code>nnoremap而不是nmap
,所以盡管你映射了字符序列中的字符 也不會有影響。Vim會將其中的字符按默認(rèn)功能執(zhí)行。
希望你能看出Vim mappings的潛能及隨之引發(fā)的閱讀困難。
像剛才一樣創(chuàng)建一個(gè)mapping,用單引號而不是雙引號。
試試用vnoremap
添加一個(gè)mapping,使其能夠用引號將你 高亮選中 的文本包裹。 你可能會需要???<?``?
??和????>
??命令,所以先執(zhí)行??:help `<``
?看看幫助文檔。
將normal模式下的H
映射為移動到當(dāng)前行的首部。h
是左移,所以你可以認(rèn)為H
是 “加強(qiáng)版”的h
、
將normal模式下的L
映射為移動到當(dāng)前行的尾部。l
是右移,所以你可以認(rèn)為L
是 “加強(qiáng)版”的l
、
讀取幫助文檔:help H
和:help L
看看你覆蓋了哪些命令。考慮考慮這會不會影響你。
將這些mappings添加到你的~/.vimrc
文件中,確保用你的“編輯~/.vimrc
”和“重讀~/.vimrc
” 映射操作~
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: