You can use vim's :mksession
and write each "workspace" to a different file, then reopen a session using vim -S session_file
, however, if you're open to using a plugin then I find the Startifyvim-startify plugin is exactly what I need for this sort of scenario: https://github.com/mhinz/vim-startify.
It does a great job of managing sessions, in vim and mccvim, and it gives you a list of recent files as well when you open vim. It will auto-change to the right working directory for you too. It also lets you pin files to the startify opening screen as well, which is nice for easy access to things like your .vimrc