Vimscript Execute命令

2018-02-24 16:02 更新

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í)行,在新的分割里打開該文件。

Execute危險嗎?

在大多數(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里這樣做可以化繁為簡。

練習(xí)

瀏覽:help execute來明了哪些命令你可以用execute實現(xiàn)而哪些不可以。 但當(dāng)涉獵,因為我們很快將重新審視這個問題。

閱讀:help leftabove:help rightbelow,:help :split:help :vsplit(注意最后兩個條目中額外的分號)。

在你的~/.vimrc中加入能在選定的分割(豎直或水平,上/下/左/右方位)中打開前一個緩沖區(qū)的映射。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號