![Как получить буфер с возможностью навигации (редактирования?) с `messages` vim?](https://rvso.com/image/1543219/%D0%9A%D0%B0%D0%BA%20%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C%20%D0%B1%D1%83%D1%84%D0%B5%D1%80%20%D1%81%20%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C%D1%8E%20%D0%BD%D0%B0%D0%B2%D0%B8%D0%B3%D0%B0%D1%86%D0%B8%D0%B8%20(%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%3F)%20%D1%81%20%60messages%60%20vim%3F.png)
Поэтому, если я получаю сообщение об ошибке от плагина, я хотел бы иметь возможность сообщить об этой ошибке на GitHub или аналогичном ресурсе.
К сожалению, его нельзя выбрать мышью; и после появления и предложения нажать RETURN, он, похоже, исчез навсегда.
Я обнаружил, что могу вызвать появление ошибоксновас использованием
:messages
или:3messages
или подобных; но они появляются в одинаковой форме: невыбираемые, бесполезные.Еще один укладчикспросиланалогичный вопрос, который дал полезную команду
: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
.