cmake 跳转到使用vim在源文件中出错,类似于在VS代码终端中单击鼠标

wvyml7n5  于 2023-02-12  发布在  其他
关注(0)|答案(1)|浏览(180)

我试图从VS代码跳到纯粹的终端+vim开发,我缺少了一个我经常使用的VS代码的效率提升器。当我make一些项目,并且存在错误时,stdout显示了到有错误的源文件的路径,沿着行:列号。在VS代码终端中,我可以用鼠标左键单击它,它将打开VS代码文本编辑器(当然启用了VIM模拟器),到那个位置。在终端和/或vim中有类似的时间节省吗?也就是说,一些东西可以让我直接从制造错误到编辑vim中的那个位置,而不是阅读错误日志,记住路径:行:列并手动打开那个文件?
例如,假设我在make输出中有以下行:

/home/myusername/someProject/src/foo.c:30:5: warning: implicit declaration of function 'bar'; did you mean 'barr'? [-Wimplicit-function-declaration]
   30 |     bar(26);
      |     ^~~~~~~~~~~~~
      |     barr

有没有什么简单的方法可以跳转到/home/myusername/someProject/src/foo.c:30:5,而不用鼠标突出显示它并复制/粘贴它?
到目前为止,我在SO上找到的最接近的东西是this,但我猜make输出将捕获只有在尝试编译后才会发生的错误,而像Syntastic这样的实时工具只会捕获语法错误。我还没有使用Syntastic,但我猜他们捕获的是一些项的并集。但是在后台连续编译以检查编译错误显然代价太高。
我也注意到了错误本身,IidoEe. -Wimplicit-function-declaration是超链接。也许make/cmake中也有一些设置来为src文件生成链接?

fhg3lkii

fhg3lkii1#

用户手册 * 是您认真使用Vim时的必读书目 *,其中有整整一节专门介绍编译::help 30.1.
总而言之...

  • 您可以使用:help :compiler命令选择Vim所谓的"编译器":
:compiler gcc

它告诉 vim :

  • 编译代码时要执行的外部命令
  • 如何解释最终的错误输出。
  • 执行:help :make命令:
:make %

它告诉 vim :

  • 为了执行上面定义的外部命令,
  • 并且在有错误要报告的情况下捕获任何输出。
  • 您可以使用:help quickfix功能来显示、导航最终错误并与之交互:
:cwindow    " opens the quickfix window if there are valid errors
:cn         " jump to next error
etc.

FWIW,Vim在C中有很强的根基,它到处都是,因为运行make:make命令的默认行为,默认的:help 'errorformat'已经处理了大多数常见的C编译器,所以:

:make

然后是:

:cw

在您当前项目中,应该可以让您体验到预期的效果:

现实生活中的考虑...

  • 为你编辑的每个文件手动设置编译器是一个PITA。花几分钟的时间组装一个自动命令要有意义得多。
  • Vim附带了一个庞大且不断增长的"编译器"集合,请查看$VIMRUNTIME/compilers
  • Vim提供了"编辑、编译、运行"循环的基本功能,但这种体验可能还不够完善。例如,您可能希望在出现错误时自动打开快速修复列表,等等。基本上有两种方法可以解决这个问题:使用一些第三方插件和/或自己写东西。我倾向于最喜欢后者(例如thisthis),但第三方插件路径也是有效的。

相关问题