W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
execute
命令用來把一個字符串當(dāng)作Vimscript命令執(zhí)行。在前面的章節(jié)我們曾經(jīng)跟它打過交道, 不過隨著對Vimscript中的字符串有更深入的了解,現(xiàn)在我們將再次認(rèn)識它。
execute
基本用法執(zhí)行下面的命令:
:execute "echom 'Hello, world!'"
Vim把echom 'Hello, world!'
當(dāng)作一個命令,而且盡職地在把它輸出的同時將消息記錄下來。 Execute是一個非常強(qiáng)大的工具,因為它允許你用任意字符串來創(chuàng)造命令。
讓我們試試一個更實用的例子。先在Vim里打開一個文件作為準(zhǔn)備工作,接著使用:edit foo.txt
在同一個窗口創(chuàng)建新的緩沖區(qū)。 現(xiàn)在執(zhí)行下面的命令:
:execute "rightbelow vsplit " . bufname("#")
Vim將在第二個文件的右邊打開第一個文件的豎直分割窗口(vertical split)。為什么會這樣?
首先,Vim將"rightbelow vsplit"
和bufname('#')
調(diào)用的結(jié)果連接在一起,創(chuàng)建一個字符串作為命令。
我們過一段時間才會講到相應(yīng)的函數(shù),現(xiàn)在姑且認(rèn)為它返回前一個緩沖區(qū)的路徑名。 你可以用echom
來確認(rèn)這一點。
待bufname
執(zhí)行完畢,Vim將結(jié)果連接成"rightbelow vsplit bar.txt"
。?execute
命令將此作為Vimscript命令執(zhí)行,在新的分割里打開該文件。
在大多數(shù)編程語言中使用諸如"eval"來構(gòu)造可執(zhí)行的字符串是會受到譴責(zé)的(如果不會是更嚴(yán)重的后果)。 因為兩個原因,Vimscript中的execute
命令能免于操這份心。
首先,大多數(shù)Vimscript代碼僅僅接受唯一的來源——用戶的輸入。 假設(shè)有用戶想輸入一個古怪的字符串來執(zhí)行邪惡的命令,無所謂,反正這是他們自己的計算機(jī)! 然而在其他語言里,程序通常得接受來自不可信的用戶的輸入。Vim是一個特殊的環(huán)境, 在此無需擔(dān)心一般的安全性問題。
第二個原因是因為Vimscript有時候處理問題的方式過于晦澀難懂且稀奇古怪。 這時execute
會是完成任務(wù)的最簡單,最直白的方法。 在大多數(shù)其他語言中,使用"eval"不會省下你多少擊鍵的生命,但在Vimscript里這樣做可以化繁為簡。
瀏覽:help execute
來明了哪些命令你可以用execute
實現(xiàn)而哪些不可以。 但當(dāng)涉獵,因為我們很快將重新審視這個問題。
閱讀:help leftabove
,:help rightbelow
,:help :split
和:help :vsplit
(注意最后兩個條目中額外的分號)。
在你的~/.vimrc
中加入能在選定的分割(豎直或水平,上/下/左/右方位)中打開前一個緩沖區(qū)的映射。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: