function! CopyFiltered()
let buffer = join(getbufline(bufname("%"), 1, "$"), "\n")
let buffer = substitute(buffer, "foo", "BAR", "g")
call setreg("*", buffer)
endfunction
noremap <leader>Y :call CopyFiltered()<CR>
ZnVuY3Rpb24hIENvcHlGaWx0ZXJlZCgpCiAgICBsZXQgYnVmZmVyID0gam9pbihnZXRidWZsaW5lKGJ1Zm5hbWUoIiUiKSwgMSwgIiQiKSwgIlxuIikKICAgIGxldCBidWZmZXIgPSBzdWJzdGl0dXRlKGJ1ZmZlciwgImZvbyIsICJCQVIiLCAiZyIpCiAgICBjYWxsIHNldHJlZygiKiIsIGJ1ZmZlcikKZW5kZnVuY3Rpb24Kbm9yZW1hcCA8bGVhZGVyPlkgOmNhbGwgQ29weUZpbHRlcmVkKCk8Q1I+Cg==