vim设置'map <f12>:!python%<cr>'在终端执行后自动返回vim </cr> </f12>

时间:2012-08-22 09:21:09

标签: vim

我将map<F12> :!python %<cr>添加到~/.vimrc。但是,当我按下键<F12>时,它会在执行此命令后自动退出。在正常情况下,它应该停在Press ENTER or type command to continue行,但在我的情况下,它只是跳过这一行并返回到vim。看起来有人按ENTER键偷偷。最令人惊讶的是它只发生在终端。当我手动键入`:!python%'或使用gvim时,一切正常。我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分: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"