There's nothing Vim specific as I use Vim and Qt Creator and even Emacs for different projects. All of them allow to open a "session" with one or more projects, but it's about what you were doing before in these projects, not the projects themselves.
Sure, most editors have an idea of a session / project file that remembers layouts and open files of the individual project but terminal Vim (or any other terminal editor) is nice because it runs within a window of tmux directly. There's no external GUI program that gets spawned outside of tmux. Once that external program is launched, tmux can no longer control it.
With GUI editors you'd have to use session / project files and then manually open / close your 1 instance of that editor when you switch between projects. It's kind of a clumsy experience (but doable).
I’m sorry but this is nonsense. I don’t doubt that your vim workflow works at all, and that’s great.
There’s two major issues though - compared to entering my PC password, opening a tmux session vs clicking a button(or using a keyboard shortcut) is meaningless. Besides, for the last two decades, machines have had a sleep/hibernate functionality which means you can resume immediately, whether that’s a gui editor or a tmux session, with 0 interaction - I enter my password and my IDE is open, exactly where I left it (even in a debugging session if I needed it).
> With GUI editors you'd have to use session / project files and then manually open / close your 1 instance of that editor when you switch between projects. It's kind of a clumsy experience
I can’t think of a single gui editor that restricts you to one instance of it running, and I can’t think of a single gui editor which you would need to shut down to open a different session/workstation in. Visual studio for example has a list of recently opened projects in the file menu. In 3 clicks you can swap from one to another, or you can just open a second instance of it.
Vs code has Ctrl r to “open recent” and you can choose from the command pallete (no mouse needed)
> Besides, for the last two decades, machines have had a sleep/hibernate functionality which means you can resume immediately
Hibernate isn't dependable, especially not on a Windows box where it will do a full reboot to update itself which is out of your control. Also hibernate is quite buggy (even after 2 decades) and doesn't assist in switching between projects.
> I can’t think of a single gui editor that restricts you to one instance of it running...
You can run more than 1 copy of a GUI editor for sure, but are you really going to open 8 independent copies of VSCode? How will you pick which one to use? Would you put each one in its own independently labeled virtual desktop or put them all into 1 virtual desktop and now juggle 8 VSCode icons in your taskbar? That seems like a massive burden from a usability POV and from a system resource POV one copy of VSCode with a "full time developer" amount of plugins uses around 600mb of memory just to open it once. So if you had 8 of those open you would use around ~5 gigs of memory, and chances are your idle CPU is going to be jacked up too even when not typing into any of them (it does for me on my Windows box).
With terminal Vim you don't need to worry about system resources ever. It uses less than 10mb of memory even with 40+ plugins and your CPU load stays at zero even if you have 17 copies of Vim running (which is what I have currently running).
Open recent is also not dependable because chances are you're opening and editing things that aren't projects all the time (such as config files, etc.). This isn't all theory either. I used VSCode for over a year and these are all real problems I ran into. I only recently switched to Vim (relatively speaking) and all of those project management problems I had went away.