vim の `messages` を使用してナビゲート可能な (編集可能な?) バッファを取得するにはどうすればよいですか?

vim の `messages` を使用してナビゲート可能な (編集可能な?) バッファを取得するにはどうすればよいですか?

したがって、プラグインからエラーが発生した場合は、そのエラーを GitHub などで報告できるようにしたいと思います。

残念ながら、マウスで選択することはできません。また、表示されて Enter キーを押すように求められた後、永久に消えてしまったようです。

  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')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

関連情報