W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
既然已經(jīng)學(xué)了execute
和normal!
,我們就可以深入探討一個(gè)Vimscript慣用法。 執(zhí)行下面的命令:
:execute "normal! gg/foo\<cr>dd"
這將移動(dòng)到文件的開頭,查找foo
的首次出現(xiàn)的地方,并刪掉那一行。
之前我們嘗試過用normal!
來執(zhí)行一個(gè)搜索命令卻無法輸入必須的回車來開始進(jìn)行搜索。 結(jié)合execute
和normal!
將解決這個(gè)問題。
execute
允許你創(chuàng)建命令,因而你能夠使用Vim普通的轉(zhuǎn)義字符串來生成你需要的"打不出"的字符。 嘗試下面的命令:
:execute "normal! mqA;\<esc>`q"
這個(gè)命令做了什么?讓我們掰開來講:
:execute "normal! ..."
:執(zhí)行命令序列,一如它們是在normal模式下輸入的,忽略所有映射, 并替換轉(zhuǎn)義字符串。mq
:保存當(dāng)前位置到標(biāo)記"q"。A
:移動(dòng)到當(dāng)前行的末尾并在最后一個(gè)字符后進(jìn)入insert模式。;
:我們現(xiàn)在位于insert模式,所以僅僅是寫入了一個(gè)";"。\<esc>
:這是一個(gè)表示Esc鍵的轉(zhuǎn)義字符串序列,把我們帶離insert模式。`q
:回到標(biāo)記"q"所在的位置。看上去有點(diǎn)繞,不過它真的很有用:它在當(dāng)前行的末尾補(bǔ)上一個(gè)分號并保持光標(biāo)不動(dòng)。 在寫Javascript,C或其他以分號作為語句分隔符的語言時(shí),一旦忘記加上分號,這樣的映射將助你一臂之力。
重讀:help expr-quote
(你之前應(yīng)該看過)來提醒你怎么用execute
通過轉(zhuǎn)義字符串傳遞特殊字符給normal!
。
在翻開下一章之前,放下本書休息一下。吃一個(gè)三明治或喝一杯咖啡(譯注:或者茶!), 喂一下你的寵物——如果你有的話。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: