【问题标题】:How can I write a shortcut to compile and run a program in a separate terminal window in Vim?如何编写快捷方式来在 Vim 的单独终端窗口中编译和运行程序?
【发布时间】:2021-12-25 15:52:51
【问题描述】:

我现在有一个 Sublime Text 构建系统:它编译一个 C++ 程序,然后在 Terminal.app 中打开一个新窗口,并在按下 ctrl+b 时运行它。

{
    "shell_cmd": "g++-11 -std=c++20 '${file}' -o '${file_base_name}' && echo 'cd \"${file_path}/\"' > '/tmp/${file_base_name}' && echo './\"${file_base_name}\"' >> '/tmp/${file_base_name}' && echo read >> '/tmp/${file_base_name}' && chmod +x '/tmp/${file_base_name}' && open -a Terminal.app '/tmp/${file_base_name}'"
}

但是,我不确定如何在 (Mac)Vim 中获得一些东西。我读过一些类似的问题,但没有一个提到在单独的终端中打开。

我已经尝试编写一些快捷方式/命令来在 Vim 中编译和运行,这主要是可行的,但我仍然希望我的程序在单独的窗口中运行(已编辑)。

noremap <C-b> :!g++-11 %:p && ./a.out<CR>

【问题讨论】:

  • 内置终端是否可以,还是您绝对要打开一个单独的终端?另外,你尝试了什么?
  • @romainl 我编写了自己的命令来在 Vim 的内置终端中编译和运行我的程序(附加在帖子中)。它有效,但我无法粘贴任何输入,这是一个问题。如果支持粘贴输入,内置终端和单独的终端都可以。
  • 您发布的命令没有使用内置终端。见:help :terminal

标签: c++ vim macvim


【解决方案1】:

希望neovim 中的这个插件可以帮助到你:https://github.com/michaelb/sniprun

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
  • 感谢您的回答,扩展看起来不错。但是,我使用的是 MacVim,(我认为它使用常规的 Vim 而不是 Neovim)所以我不确定它是否可以工作。
【解决方案2】:

您实际上有几个选择,因此请使用最适合您需要的选项。

你可以使用vim的内置终端:terminal(或:term;见:help :terminal),这可能是更简单的方法:

:term g++-11 %:p && ./a.out<CR>

或者您可以使用 :compiler:make(参见 :help :compile:help 'makeprg'):

:compiler gcc
:let $CXXFLAGS='-std=c++20 -Wall -Werror'
:make

【讨论】:

    猜你喜欢
    • 2013-08-20
    • 2020-11-29
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多