2012-08-22 59 views
4
中執行後自動返回到vim

我將map<F12> :!python %<cr>加入~/.vimrc。但是,當我按下鍵<F12>時,它會在執行此命令後自動退出。在正常情況下,它應該停止在一行Press ENTER or type command to continue,但在我的情況下,它只是跳過這一行並返回到vim。它看起來像有人按ENTER鍵偷偷地。最令人驚訝的是,它只發生在終端。當我手動輸入`:!python%'或使用gvim時,一切正常。我不知道如何解決這個問題。vim setting'map <F12>:!python%<cr>'在終端

+0

同樣的問題在這裏,我絕對不知道。此外,有時Vim甚至不執行我的命令。有時它幫助我,把'print'放到我的python代碼中。 –

+0

@DavidHalter一瞬間,我突然發現真相。我添加的命令有一個意想不到的尾部空間。所以當'按ENTER鍵或輸入命令繼續'出現vim會自動添加一個空格... – Yyao

+0

@Yyao我仍然有同樣的問題,我甚至沒有任何跟蹤空間。確切語法'map :!python%' – yask

回答

3

在讀取消息之前,終端版本可能會重畫屏幕。您可以嘗試設置'lazyredraw'來延遲重繪。

一種解決方法可以設置'lazyredraw'並增加了通話的功能getchar()的映射:

function! RunPython() 
    let s:save_lz = &lazyredraw " save 'lazyredraw' setting 
    set lazyredraw 
    !python % 
    call getchar()    " stop waiting pressing a key 
    let &lazyredraw = s:save_lz " restore 'lazyredraw' 
    endfunction 
    map <F12> :call RunPython()<CR> 

編輯:

您也可以考慮使用插件完成這個任務,因爲"SingleCompile : Make it more convenient to compile or run a single source file"

+0

非常感謝。該插件是一個非常漂亮的插件。剛纔我發現原因是我添加的命令有一個意外的尾部空間不小心。 – Yyao

+0

不錯,你解決了它! – mMontu

相關問題