2012-08-22 31 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

相关问题