vim编辑器,使用日志文件导航源代码

cat*_*eof 2 vim logging

这个问题可能非常抽象,所以请提前道歉.

我有一个日志文件,其中包含符合某种模式(文件名,行,函数,跟踪语句)的行.例如

file1.cpp, 12, function1, "we are in function 1"
file2.cpp, 104, add, "add function"
another_file.cpp, 300, function2, "This is a trace"
Run Code Online (Sandbox Code Playgroud)

我想要的是vim编辑器分成两个窗口.一个窗口有日志文件,每次我将光标移动到一条跟踪线,另一个窗口将在正确的代码行中打开实际文件.

例如,在顶部窗口中,我的光标在线

file2.cpp, 104, add, "add function"
Run Code Online (Sandbox Code Playgroud)

第二个(vim在两个窗口中分割)窗口打开第104行的file2.cpp(在第二个窗口的中心).

有没有机会使用结构化文件(日志文件)作为源代码的"导航器"?如果是的话,我们怎么能在vim中做到这一点?如果没有,让我们做吧!(但我不想重新发明轮子:-))

Don*_*eba 5

您描述的内容在Vim中称为quickfix窗口.您可能从:make命令的结果中熟悉它.您可以使用打开quickfix窗口:cfile.格式由errorformat变量确定.查看Vim帮助了解更多详情.

对于您的示例(文件名,行,函数,跟踪语句),您可以执行以下操作:

:set errorformat=%f\\\,\\\ %l\\\,\\\ %m
:cfile log.txt
Run Code Online (Sandbox Code Playgroud)

无偿的三重反斜杠可以在:set命令中绕过转义序列.格式转换为%f\,\ %l\,\ %m.

或者,您可以以gcc格式输出日志.在这种情况下,默认设置errorformat将能够解析它,您只需要使用该:cfile命令打开它.

加载后,您可以使用:clist或查看日志:copen.