Выполнить содержимое буфера как vimscript

10

У меня есть nofileбуфер, который содержит vimscript, и я хочу его выполнить. Однако, :so % это не будет работать, потому что для этого требуется сохраненный файл, а не буфер. Есть ли команда vim, чтобы сделать это по умолчанию? Если нет, то возможно ли создать функцию, которая делает то же самое?

Вечнозеленое дерево
источник

Ответы:

13

Да, вы можете восстановить весь буфер с помощью ggyGили :%yи выполнить его с помощью :@".

Короче говоря:

:%y|@"<CR>

Используется в отображении:

nnoremap <key> :%y|@"<CR>

Используется в гибкой команде, которая работает со всем буфером по умолчанию или в необязательном диапазоне:

command! -bar -range=% Foo execute <line1> . ',' . <line2> . 'y|@"'
romainl
источник
у вас пропущено двоеточие в первой команде.
Витор
Кроме того, это забивает "регистр. Я полагаю, что вы можете использовать другой регистр, если хотите, или вы можете просто сохранить "регистр и восстановить его впоследствии.
EvergreenTree