Я не уверен, удастся ли вам сделать это с помощью echo и списка сообщений.
Хороший способ сделать это - создать новый буфер и поместить интересующий вас материал в этот буфер. Затем установите буфер на nomodifiable
, nomodified
и buftype=wipe
. Если вам нужно добавить больше данных в буфер, set modifiable
, добавьте данные, а затем set noma nomod bh=wipe
. Установите для типа файла что-то нестандартное и напишите файл синтаксиса для требуемого синтаксиса.
Установите имя буфера в соответствии с вашими требованиями.
Наконец, сопоставьте сочетание клавиш или команду с чем-то вроде:
map @ :exe 'bufdelete' bufnr('MyBufferName')<CR>
Это заставит клавишу @ закрыть буфер (тем самым предоставляя вам единственный метод удаления информации - один ключ). Конечно, вы могли бы улучшить это, вставив его в функцию и проверив, что буфер существует перед его удалением, но я пока оставлю это как упражнение для вас (дайте мне знать, если у вас возникнут проблемы).
Существующий плагин, который делает нечто похожее на это Плагин Dr Chip RunView . Посмотрите на исходный код и посмотрите, поможет ли он. Добавьте комментарий к этому сообщению, если вам нужна дополнительная помощь.