4

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

4

1 回答 1

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:使编译或运行单个源文件更方便”

于 2012-08-22T12:05:01.050 回答