Isso é basicamente um mapeamento simples:
:vnoremap <C-s> :write! >> file<CR>
Para preceder o nome do arquivo, eu invoco um comando externo, embora isso também possa ser feito com readfile()
/ writefile()
.
:vnoremap <C-s> :<C-u>execute '!echo "%" >> file'<Bar>'<,'>write! >> file<CR>