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

最佳答案

终端版本可能在您能够阅读消息之前重绘屏幕。您可以尝试设置 '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"

关于vim设置 'map<F12> :!python %<cr>'在终端执行后自动返回vim,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12069963/

10-12 17:20