Tha*_* DK 7 vim errorformat cscope
我想将输出从cscope重定向到Vim quickfix窗口.胶水部分很容易,但我目前陷入错误格式.以下是cscope输出的示例(cscope -L -1 bar):
Format: "filename scope linenumber sourceline"
Example: "abc.cpp foo 25 bar()"
Run Code Online (Sandbox Code Playgroud)
这意味着在foo()中,在abc.cpp的第25行,调用bar().
efm = %f\ %*[^\ ]\ %l\ %m但工作但范围信息丢失.例如:
Input: "abc.cpp foo 25 bar()" becomes
Output: "abc.cpp |25| bar()"
Run Code Online (Sandbox Code Playgroud)
我想要的是在quickfix窗口中包含范围,如下所示:
Input: "abc.cpp foo 25 bar()" becomes
Output: "abc.cpp |25| bar() inside foo()"
Run Code Online (Sandbox Code Playgroud)
是否可以仅使用errorformat执行此操作,或者是否需要编写脚本来操作输出,然后再将其输送到Vim?
而不是搞乱errorformat,只需设置cscopequickfix和使用正常:cscope命令.例如.(来自vim帮助)
:set cscopequickfix=s-,c-,d-,i-,t-,e-
Run Code Online (Sandbox Code Playgroud)
编辑
您还可以使用以下过滤器对字段进行重新排序
sed -e 's/^\([^ ]\+\) \([^ ]\+\) \([^ ]\+\) \(.*\)$/\1 \3 \4 inside \2/'
Run Code Online (Sandbox Code Playgroud)
设置它来过滤你的消息,然后使用 efm
errorformat=%f\ %l\ %m
Run Code Online (Sandbox Code Playgroud)