【问题标题】:vim setting 'map<F12> :!python %<cr>' automatically return to vim after executing in terminalvim setting 'map<F12> :!python %<cr>' 在终端执行后自动返回vim
【发布时间】:2012-08-22 20:12:01
【问题描述】:

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

【问题讨论】:

  • 同样的问题,我完全不知道。此外,有时 Vim 甚至不执行我的命令。有时它可以帮助我,将print 放入我的 python 代码中。
  • @DavidHalter 片刻岁月,我突然发现了真相。我添加的命令有一个意外的尾随空格。所以当Press ENTER or type command to continue 出现时,vim 会自动添加一个空格...
  • @Yyao 我仍然有同样的问题,我什至没有任何尾随空间。精确语法map &lt;F7&gt; :!python %&lt;CR&gt;

标签: vim


【解决方案1】:

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

【讨论】:

  • 非常感谢。该插件是一个非常好的插件。刚才我发现原因是我添加的命令不小心有一个意外的尾随空格。
猜你喜欢
  • 2020-04-28
  • 2018-04-09
  • 2011-05-29
  • 2010-11-17
  • 2012-11-10
  • 2013-10-20
  • 1970-01-01
  • 2020-05-25
相关资源
最近更新 更多