如何使用 vim 的“訊息”獲得可導航(可編輯?)的緩衝區?

如何使用 vim 的“訊息”獲得可導航(可編輯?)的緩衝區?

因此,如果我從插件中收到錯誤,我希望能夠在 GitHub 或類似網站上報告該錯誤。

不幸的是,它不能用滑鼠選擇;在出現並要求我按“返回”後,它似乎永遠消失了。

  1. 我發現我可以導致錯誤出現再次使用:messages:3messages類似;但它們以同樣的方式出現:不可選擇、無用。

  2. 另一個堆疊機一個類似的問題,產生了有用的命令: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')是一個 vimscript 函數,它執行 Ex 命令並捕獲其輸出
  • ={vimscript expression}是表達式暫存器,其值是vimscript表達式的結果

因此,上面捕獲了表達式寄存器中命令的輸出:messages,並將表達式寄存器的內容放在遊標所在的位置。

:h quote=:h :put:h execute()

答案3

嘗試這個:

:redir > messages.txt
:messages
:redir END
:e messages.txt

:messages您可以透過變更為抑制輸出到顯示器,同時仍會擷取訊息輸出:silent messages

相關內容