Если ваш Vim создан с поддержкой буфера обмена (:echo has('clipboard')
возвращает 1
), то вы можете поместить текст в регистр *
(выбор / щелчок правой кнопкой мыши) или в регистр +
(Ctrl + C / Ctrl) + V) с:
let @+ = 'foo'
let @* = 'foo'
В настройках vimscript лучше использовать :help setreg()
, так как это дает вам больший контроль над тем, что в действительности происходит в регистре и как его можно использовать. В вашем случае следующая команда:
call setreg('+', lines, 'l')
должна заполнить регистр буфера обмена содержимым lines
и пометить его как «linewise».
Или вы можете сделать менее элегантный но гораздо проще рассуждать о:
execute l:start . ',' . l:end . 'y +'
См. :help :yank
и :help :range
.
Если у вас нет поддержки буфера обмена, вам придется передать эти строки в внешний инструмент, такой как xclip
на Linux или pbcopy
на MacOS:
execute l:start . ',' . l:end . 'w !pbcopy'
См. :help :w_c
.