【问题标题】:vim compile and run hotkey does not pause after outputvim编译运行热键输出后不暂停
【发布时间】:2014-01-09 20:02:36
【问题描述】:

我正在尝试在 vim 中设置一个热键来保存、编译和运行当前文件。到目前为止,我至少花了一个小时试图让它工作,所以它可能抵消了拥有这样一个热键的任何节省时间的好处,但这就是我生活的故事;)

如果我输入:w 并按回车键,然后输入:!g++ % -o %< && ./%< 并按回车键,则此方法有效,并且在输出后显示“按回车键或键入命令继续”,这让我在返回之前查看输出到 vim。我应该可以通过将此行放入~/.vimrc 来将其映射到 F8 键:

map <F8> :w <CR> :!g++ % -o %< && ./%<<CR>

当我按 F8 时它会运行所有命令,但它会在最后立即返回 vim,而不是用 “按 Enter 或键入命令继续”暂停,所以我不能查看输出。如果我删除了最后的&lt;CR&gt;,那么我需要在按F8后按回车。

有人非常了解 vim 并且知道我做错了什么,或者尝试过类似的方法吗?

【问题讨论】:

  • 不是您问题的答案,但我建议您查看:h :make。如果'makeprg' 设置正确,:make 命令将编译/制作您的项目并在quickfix 列表中填充错误。您可以使用:cnext:cprevious 在列表中移动或使用:copen 在窗口中打开快速修复列表。至于获取程序的输出可能是这样的::nnoremap &lt;f8&gt; :exe 'new +r!'.expand('%&lt;')&lt;bar&gt;0d_

标签: vim


【解决方案1】:

您的映射对我有用(有适当的提示;Linux 上的终端 Vim 7.4.135)。一些备注:

  • You should use :noremap;它使映射不受重映射和递归的影响。
  • 第二个:! 命令之前的空格会导致光标向右移动,因为它在正常模式下被解释。
  • 您可以将两个 Ex 命令组合到一个命令行中。
  • 虽然在这里没有害处,但您最好将&lt; 字符转义为&lt;lt&gt;
  • 正如 Peter Rincker 已经评论的那样,使用 :make 优于显式触发编译器。

尔格:

:nnoremap <F8> :w<Bar>!g++ % -o %<lt> && ./%<lt><CR>

【讨论】:

  • 你的版本对我有用,我也得到了:make 的工作。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-25
  • 2020-08-26
  • 2017-12-22
  • 1970-01-01
  • 2019-12-05
  • 1970-01-01
  • 2013-08-20
相关资源
最近更新 更多