如何在Vim中使用quickfix调试Bash脚本

8
我每天使用Vim编写shell脚本。我一直在研究quickfix窗口,我认为它可以加快我的编辑-运行-修复循环的速度。
如果我理解正确,我必须编写自己的errorformat函数,以便Vim能够捕捉错误并将其引入quickfix窗口。但这似乎非常复杂。
在编写Bash脚本时,是否有更简单/更方便的方法利用Vim的quickfix窗口?

1
你的脚本在运行时是否会产生带有行号注释的错误消息,你想要检查吗?或者你想使用shellcheck在quickfix窗口中显示编译时警告? - that other guy
是的,我认为我需要使用shellcheck。我将尝试实现下面Michael提供的解决方案。谢谢。 - Pythonist
1个回答

10

Vim的quickfix窗口旨在加快编辑-编译-编辑循环。由于Bash脚本不会被编译,我们必须替换为能够指出当前脚本中错误的步骤。

您需要的是一个用于Bash脚本的静态分析工具。有两个很好的工具:shellcheckcheckbashisms。您至少需要安装shellcheck,因为它比另一个更全面,但安装checkbashisms可以帮助捕捉一些其他问题。

要将这两个工具集成到Vim中,您需要一个名为Syntastic的插件。请查看项目页面获取安装说明。

安装完毕后,您将能够立即获得有关Bash脚本基本问题的反馈:

带有Syntastic + shellcheck的Vim窗口

  • 使用:SyntasticCheck强制运行检查器
  • 如果要出现“快速修复”窗口,请运行:Errors

1
如果 shebang 是 #!/bin/sh,ShellCheck 实际上会警告大多数与 checkbashisms 相同的事情。 - that other guy
@thatotherguy 很好知道。我相当确定checkbashisms警告了一些shellcheck没有的事情,但我同意,shellcheck是这对中更有用的。 - Michael Kropat
虽然以上方法在其他方面很有用,但对于__调试__来说并不是一个很好的答案。以上提供了静态代码分析的答案,但没有提供调试。调试将提供一些仪器方法,以交互方式逐步运行代码,提供检查变量和查看执行过程的机会。 - Banoona
@Banoona 调试可以在编译时或静态分析时进行。就你所说的,调试通常指运行时调试。我不知道任何一种语言的运行时调试工具与 Vim 快速修复窗口集成,因为它并不是为此设计的。我认为“如何执行 bash 脚本的运行时调试”将是一个很好的 SO 问题,但这与此处所问的问题不同。 - Michael Kropat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接