【问题标题】:Vim workflow - debugging and bringing up TerminalVim 工作流程 - 调试和启动终端
【发布时间】:2012-03-18 04:50:45
【问题描述】:

我刚刚从 emacs 切换到 vim,使用带有 Janus 的 MacVim。 在 emacs 中,您可以拥有一个仅供 shell 使用的缓冲区。这在 MacVim 中可行吗?调试时会很有帮助。

这也让我想问 - 有没有一种类似于 emacs 的 vim 编译方法:在其中键入 meta-x compile,然后能够单击错误以将光标带到相关行?

我只是想为 MacVim 找出一个好的工作流程,并且想要一个好的方法来修复我的错误,而不必并排排列终端和 MacVim。任何建议表示赞赏。

【问题讨论】:

  • 你在编译什么语言?

标签: vim macvim


【解决方案1】:

Vim 本身不进行任何终端仿真,但您可以使用Conque pluginVim 窗口内提供终端仿真。 Conque 需要支持 Python 的 VimMacVim 就足够了)。

但是,如果您的工作流程只专注于跳转到命令行工具报告的位置,那么您真的应该尝试使用 quickfix 系统(请参阅 :help quickfix)。

通常,您只需运行 :make 来调用您的编译器(通常通过 make,但可以使用 the makeprg option 自定义;另见 :compiler),Vim 将使用the errorformat optionparse 任何结果消息并建立一个快速修复列表。然后,您可以使用类似的命令导航报告的位置

  • :cc N — 转到位置编号 N,
  • :cn — 下一个位置,
  • :cp — 以前的位置,
  • :cnf — 下一个文件中的下一个位置(即跳过当前文件中的其余位置),
  • :cw — 打开缓冲区中的位置列表,您可以在其中看到消息,然后按 Enter 跳转到该位置。

makeprgerrorformat 的默认值通常可以很好地解析 makecc/gcc 的输出,但它可能需要更改以处理来自其他构建系统或编译器的消息。

:grep 命令的工作方式与:make 类似(它使用grep 命令报告的位置填充快速修复列表)。

【讨论】:

  • 我想你的意思是“Vim 自己做任何终端仿真”?
【解决方案2】:

如果你有一个makefile,你可以用:make 编译。 Vim 可以解析 GCC 的输出并跳转到带有:cnext:cprevious 的错误。我认为 vim 不知道如何解析 gfortran 的输出,而且我没有将它与任何其他编译器一起使用。

我不知道有什么方法可以让 shell 在缓冲区中保持打开状态。

【讨论】:

  • 即使没有 Makefiles,您也​​可以实际使用它。只需查找“makeprg”和“efm”的文档,以了解如何使用具有不同错误格式消息的不同编译器/构建系统。根据文件类型为那些设置不同的设置非常有用。
【解决方案3】:

只要编译器输出到快速修复或位置缓冲区,那么是的,您可以轻松地从错误跳转到它们在源代码中的位置。 Vim 有一套合理的解析 Make 和 GCC 的默认值;其他格式可以用:set efm添加。

在 Vim 中运行交互式 shell 不能开箱即用,但有像 Conque 这样的插件可以提供它。

【讨论】:

    猜你喜欢
    • 2021-01-07
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 2012-06-27
    • 2020-07-11
    • 1970-01-01
    相关资源
    最近更新 更多