Как получить буфер с возможностью навигации (редактирования?) с `messages` vim?

Как получить буфер с возможностью навигации (редактирования?) с `messages` vim?

Поэтому, если я получаю сообщение об ошибке от плагина, я хотел бы иметь возможность сообщить об этой ошибке на GitHub или аналогичном ресурсе.

К сожалению, его нельзя выбрать мышью; и после появления и предложения нажать RETURN, он, похоже, исчез навсегда.

  1. Я обнаружил, что могу вызвать появление ошибоксновас использованием :messagesили :3messagesили подобных; но они появляются в одинаковой форме: невыбираемые, бесполезные.

  2. Еще один укладчикспросиланалогичный вопрос, который дал полезную команду :let @+=v:errmsg— но это только охватываетсамый последнийстрока сообщений; многие ошибки, которые я вижу, состоят изнесколькостроки, все из которых я хотел бы выделить.

Пожалуйста, помогите мне либо A. превратить :messagesокно в буфер, чтобы я мог использовать обычное аналогичное визуальное выделение для копирования того, что я хочу сообщить за пределами Vim, или, по крайней мере, B. создать что-то, что я могу вставить в свой, .vimrcчто будет копироватьвсестрок последней ошибки в буфер обмена.

Спасибо!(=

решение1

Ответ Heptite — хороший способ сделать это с помощью встроенных. Если вы не против использования плагина, мойбуферизоватьПлагин немного автоматизирует процесс. Позволяет просто сделать:

:Bufferize messages

Для того, чтобы получить буфер предварительного просмотра с содержимым вывода этой команды.

Кстати, я удивлен, что :messagesвывод нельзя выбрать. Наверное, вы используете 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.

Связанный контент