因此,如果我从插件中收到错误,我希望能够在 GitHub 或类似网站上报告该错误。
不幸的是,它不能通过鼠标选择;并且在出现并要求我按 RETURN 键后,它似乎永远消失了。
我发现我可能导致错误出现再次使用
:messages
或:3messages
或类似;但它们以相同的方式出现:不可选择,无用。另一个堆叠器问一个类似的问题,它产生了有用的命令
:let @+=v:errmsg
——但它只捕获了最后消息行;我看到的许多错误都是由多种的行,我希望选择所有这些行。
请帮助我 A. 将:messages
窗口变成缓冲区,这样我就可以使用正常的类似视觉选择来复制我想要在 Vim 之外报告的内容,或者至少 B. 构建一些我可以扔进我的文件中的东西来.vimrc
复制全部最近的错误行复制到我的剪贴板上。
谢谢!(=
答案1
Heptite 的答案是使用内置插件来实现这一点的好方法。如果你同意使用插件,我的缓冲插件可以稍微自动化这个过程。你只需要做:
:Bufferize messages
为了获得包含该命令输出内容的预览缓冲区。
顺便说一句,我很惊讶:messages
输出不可选。我猜也许你正在使用带有 GUI 的 Vim?使用终端 Vim,你可以选择,然后中键单击粘贴内容。
答案2
尝试这个:
:put = execute('messages')
解释:
:put {register}
将寄存器的内容放在光标位置(如p
在正常模式下)execute('messages')
是一个执行 Ex 命令并捕获其输出的 vimscript 函数={vimscript expression}
是表达式寄存器,其值是 vimscript 表达式的结果
因此,上述操作将捕获表达式寄存器中的命令输出:messages
,并将表达式寄存器的内容放在光标的位置。
看:h quote=
,:h :put
,:h execute()
答案3
尝试这个:
:redir > messages.txt
:messages
:redir END
:e messages.txt
:messages
通过更改为 ,您可以抑制显示输出,同时仍可捕获消息输出:silent messages
。