【问题标题】:Vim plugin cscope_quickfix.vim doesn't show the function name in quickfix windowVim 插件 cscope_quickfix.vim 不在 quickfix 窗口中显示函数名
【发布时间】:2015-09-17 22:41:16
【问题描述】:

我正在编辑这个我上网的 vim 插件,以利用命令行 cscope 来打开 quickfix 窗口。我了解大部分文件。该插件非常旧,所以当我对我的数据库运行它时,我看不到函数名称。 我刚刚得到:

filename.cpp|linenumber| text from that line
main.cpp|23| returncode = say_hello();

该工具正在使用命令行 cscope,它确实返回了原始函数。 来自 cscope 的结果:

filename.cpp function_name linenumber 'text from that line'
main.cpp see_top 23 returncode = say_hello();

我进入插件,发现这一行,似乎是罪魁祸首,但我不明白它在说什么或在做什么:

set efm=%f\ %*[^\ ]\ %l\ %m

有人可以解释一下它想要达到的目标吗?从正则表达式的基本知识来看,我只能说%f 可能是文件名,然后它会忽略所有内容,直到%l 因此也忽略了我需要查看的重要函数名。 如何更改脚本以显示函数名称? 这是我一直在谈论的vim插件:QuickFix plugin 使用 quickfix 插件的原因:我在开发系统上使用 vim 6(无法升级)。我知道我可以编译新版本,但这更麻烦,因为所有库都需要更新。

Edit1:将标题更新为更直接。

【问题讨论】:

    标签: regex vim vim-plugin


    【解决方案1】:

    您可以从阅读 Vim 文档的以下部分和所有链接部分开始:

    :help 'errorformat'
    

    但该插件有几个选项,包括一个用于禁用快速修复窗口的选项。值得一试。

    【讨论】:

    • 感谢您的帮助。是的,我知道这个选项。我希望能坚持下去。插件中的 cmd_output 变量确实获得了函数名称,它只是被上面的命令屏蔽了。我该如何解决?
    • 您好,请您帮忙执行“set efm”命令吗?我在哪里可以添加该功能以便插件可以工作?
    • 如果我是你,我会在插件本身中这样做,使用 :help errorformat 打开的基本试验和错误。
    【解决方案2】:

    我知道这很愚蠢,但我认为值得一试。直接删除

    set efm=%f\ %*[^\ ]\ %l\ %m
    

    在插件中,以便 Vim 可以使用其默认的'errorformat'

    【讨论】:

    • 感谢您的回复。输出窗口现在更好了。我终于可以看到函数名了。但是“返回”键不再让我得到结果......你能帮帮我吗?我不擅长 vim 脚本。
    • 真的很抱歉,但我不明白你的意思,请尝试详细说明。 À 建议,如果您需要在 quickfix 窗口中显示函数名称之外的其他内容,那么您的问题可能表述错误。
    • quickfix 插件通过显示 cscope 输出(不带函数名称)来工作。我单击 ,它会将我带到结果文件。但是当我删除您建议的行时,它会显示 cscope 输出(带有函数名称),但按 不会将我带到结果文件。
    • 试着把所有包含 efm 的行都收起来(评论,删除 - 由你决定)。如果它有效,对你有好处,如果没有,你应该关注romainlsuggestion
    猜你喜欢
    • 2011-01-15
    • 2011-10-04
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多