如何使用 vim 的“消息”获得可导航(可编辑?)的缓冲区?

ELL*_*BLE 8 vim vim-plugins error-logging

因此,如果我从插件中收到错误,我希望能够在 GitHub 或类似网站上报告该错误。

\n\n

不幸的是,它不能用鼠标选择;在出现并要求我按“返回”后,它似乎永远消失了。

\n\n
    \n
  1. 我发现我可以使用或或类似命令再次出现错误;但它们以同样的方式出现:不可选择、无用。:messages:3messages

  2. \n
  3. 另一个 Stacker提出了类似的问题,它产生了有用的命令:let @+=v:errmsg\xe2\x80\x94 但仅捕获消息的最后一行;我看到的许多错误由多行组成,我想选择所有这些行。

  4. \n
\n\n

请帮助我 A. 将:messages窗口变成缓冲区,这样我就可以使用正常的类似视觉选择来复制我想要在 Vim 之外报告的内容,或者至少 B. 构建一些我可以放入我的文件中的东西,它将.vimrc复制所有的内容将最近错误的行复制到我的剪贴板上。

\n\n

谢谢!(=

\n

Hep*_*ite 8

尝试这个:

:redir > messages.txt
:messages
:redir END
:e messages.txt
Run Code Online (Sandbox Code Playgroud)

:messages您可以通过更改为抑制输出到显示器,同时仍捕获消息输出:silent messages


小智 7

尝试这个:

:put = execute('messages')
Run Code Online (Sandbox Code Playgroud)


小智 5

Heptite 的答案是使用内置函数来做到这一点的好方法。如果您同意使用插件,我的缓冲插件会稍微自动化该过程。让您只需执行以下操作:

:Bufferize messages
Run Code Online (Sandbox Code Playgroud)

为了获得包含该命令输出内容的预览缓冲区。

附带说明一下,我很惊讶:messages输出是不可选的。我猜你可能正在使用带有 GUI 的 Vim?使用终端 Vim,您可以选择内容,然后单击鼠标中键粘贴内容。