Jalankan konten buffer sebagai vimscript

10

Saya memiliki nofilebuffer yang berisi vimscript, dan saya ingin menjalankannya. Namun, :so % tidak akan berfungsi karena memerlukan file yang disimpan, bukan buffer. Apakah ada perintah vim untuk melakukan ini secara default? Jika tidak, apakah mungkin untuk membuat fungsi yang melakukan hal yang sama?

Pohon cemara
sumber

Jawaban:

13

Ya, Anda dapat menarik seluruh buffer dengan ggyGatau :%ydan menjalankannya :@".

Pendeknya:

:%y|@"<CR>

Digunakan dalam pemetaan:

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

Digunakan dalam perintah fleksibel yang bekerja pada seluruh buffer secara default atau rentang opsional:

command! -bar -range=% Foo execute <line1> . ',' . <line2> . 'y|@"'
romainl
sumber
Anda memiliki titik dua yang hilang pada perintah pertama.
Vitor
Juga, ini akan merusak "register. Saya membayangkan Anda bisa menggunakan register lain jika Anda mau, atau Anda bisa menyimpan "register dan mengembalikannya setelah itu.
EvergreenTree