2012-05-17 127 views
2

我有兩個命令的正常映射,一個用於調用LaTeX(映射到F6鍵),另一個用於BiBTeX(F5)。這些工作正如我所期望的那樣。我有一個功能來依次運行它們,以確保所有引用和引用都被正確插入。此功能是這樣的:在vim函數內執行正常模式下的命令

function FullDocumentGeneration() 
    execute "normal \<F6>" 
    execute "normal \<F5>" 
    execute "normal \<F6>" 
    execute "normal \<F6>" 
endfunction 

這非常適用,除了一個細節:在運行命令後,示出的消息(在殼)說按Enter鍵以返回到VIM(運行殼當像通常一樣命令),但是然後執行流程進入vim - 無需按Enter鍵。這特別煩人,因爲我通常要檢查程序輸出,所以我必須按Ctrl-Z返回到shell。有沒有辦法避免這種情況?我在功能上做錯了什麼?

回答

0

推測下一個映射會干擾命中輸入提示。 嘗試在各條線之間插入

call getchar() 

,也許除了前面有個echo "Press any key"

+0

這不起作用:vim在命令後清除屏幕,所以你得到一個空白屏幕等待你按下一個鍵......(或者只是一個空白屏幕,只需按「任意鍵......」) – wmnorth

+0

那麼,你可能必須將所有的shell命令放入一個調用中。 –

0

當您使用execute時,只要命令完成,就會退回到以前使用的任何模式。既然你正在寫一個函數來做你想做的事情,爲什麼不把它全部放在你的呼叫中,例如:!cmd line 1 && cmd line2 && cmd line3,然後它會立即全部進入shell。或者,也可以編寫一個shell腳本來執行所需操作,並通過擴展%來調用當前文件。例如,我一直在用rst和pdflatex編寫代碼,所以我一直在做以下工作。

:!rst2html.py % latex-files/%.tex && cd latex-files && pdflatex %.tex 

%展開爲當前文件名。 %:p擴展到當前打開文件的絕對路徑。

相關問題