I'll be a bit provocative and say they are things in 3 different categories that just overlap a bit in the class of text editors.
VSCode is an open-source and slimmed down version of a really good IDE, Visual Studio. It's a great choice for developing with MS tools like C# or F#.
Vim is an extension of Vi, which is mostly a set of primitives for manipulating text. As an implementation, I think Vim is not good. Vimscript shows its age. But this can be forgiven because the text manipulation primitives are so good. Vi, and to a lesser extend Vim, try to outsource everything that is not strictly text manipulation.
Emacs is a text-mode Lisp VM. Since (mostly) everything is text-oriented, it happens to have great editing facilities. But this should not distract you from the main fact. It's a platform. And it has high-quality applications (Org, Notmuch, Magit, Calc, Dired...) plus lots of libraries. Most importantly, applications can easily talk to each other in Lisp.
After more than a decade hopping around different environments, I decided computing is better done in 3 platforms. Emacs (for nearly everything), a web browser (just for hypertext) and a terminal (to deal with plumbing, Unix in my case). I've tied everything together with a tiling WM. I find it is a lot saner than using little CLI or GUI silos.
vim is worth learning as it's on most systems and you'll probably need it in a pinch -- perhaps dozens of times, in some cases. Although nano seems to be on everything these days and it's much more approachable. But, I've learned to love the power of vi/vim, so I use that.
Somehow I've gone 30 years working without learning any emacs. Every time I try I get turned off by its philosophy pretty quickly. It's not for me, but maybe it's for you.
Regardless of tool, I have always felt programmers should learn a simple terminal editor if you want to be proficient on *nix boxes. And it should be a basic terminal editor, what you can do in an ansi/vt100 emulator, e.g. no GUI, and not require a heavy editor like Emacs or VSCode etc. This can help make you more efficient and speed up simple tasks.
IDE's are awesome, but they come with a lot of weight that just isn't always needed. To this day I still us vi for all my quick checks, small edits etc even on projects within an IDE project (if I don't have the IDE loaded right then). I've been using vi since the 80's so it is just natural for me, but it is super powerful and requires very little resources to use. Even emacs while a pretty awesome editor is much heavier weight than simple vi and serves, IMO, a different purpose.
Do you spend time in console? On remote machines? Vi will be there. It is fast, you can start it right away, and once you get used to modal editing, it is really nice when editing configuration files.
With Emacs, your mileage may vary more, it has few killer apps (i.e. Org-mode, maybe magit, friend swears by notmuch for his email), but learning it takes time.
Currently, I use
* pycharm for python
* vs-code for programming in general
* vim for editing config files especially on server (but even when I need to edit .git/config, I usually open terminal in my vs-code and etid that with vim :P)
* experimenting with notes, blogging and and presentation-building eith emacs org-mode
So, for me it was worth it, you might find it too expensive of a time investment :-)
Yes. These are the time-honored tools of hacking. They've been around for decades and run largely the same way as they did back then, over any sort of UI, local or remote, even a bare VT100 terminal. Understanding these editors will provide you insight into how the hackers of the past worked, and why some prefer these editors even today. Even if you stick with your preferred tools in your day-to-day (and that's fine, everyone does their best work in different ways), the additional perspective gained by understanding these old tools, their general shapes largely unchanged by time, will be valuable to you as a programmer.
If you are hoping for some panacea of developer efficiency, you will probably be disappointed. At best, they are just another way to do most of the same things you can already do, with vscode. For some tasks, they will undoubtedly be more efficient or easier. For others, they will make your life more difficult.
If they interest you, sure give them a shot. Maybe check out some screencasts, and see if you like what they do/how they work:
I think Vim is worth learning. I don't use it for day-to-day writing and coding, but there are occasions when I need to reorganize text or data and Vim macros make short work of what would otherwise take a lot of futzing around with Awk and the like. Plus, it's handy when you're SSH'd into a Linux server, although there are alternatives unless you're in a very stripped down server environment.
Do you ever have to SSH into a server? Then learn some vim or if you are like me and it is usually a conf file then nano will do just fine.
Do you want an editor that is big on being customization and automation (a programmable text editor)? Then try using emacs. Loads of stuff you can change and automate. You can even use it as a simple web browser.
If the above don't interest you then VSCode is probably more than adequate for your needs.
At least with vim/emacs you have certain stability and proven record that they'll be around in 5 years and all the time you invest in it will pay out.
For vscode, who knows what the next most popular editor will be in 2-3 years? But then again, these editors are easy to pick up.
I think if vim or emacs intrigues you, you should go for it and try it out for at least a week or so.
I know vim but somehow my brain is just not compatible with it. I was always using `nano` and never had a need to switch, I'm working heavily over ssh, quite often coding over ssh too.
VSCode is an open-source and slimmed down version of a really good IDE, Visual Studio. It's a great choice for developing with MS tools like C# or F#.
Vim is an extension of Vi, which is mostly a set of primitives for manipulating text. As an implementation, I think Vim is not good. Vimscript shows its age. But this can be forgiven because the text manipulation primitives are so good. Vi, and to a lesser extend Vim, try to outsource everything that is not strictly text manipulation.
Emacs is a text-mode Lisp VM. Since (mostly) everything is text-oriented, it happens to have great editing facilities. But this should not distract you from the main fact. It's a platform. And it has high-quality applications (Org, Notmuch, Magit, Calc, Dired...) plus lots of libraries. Most importantly, applications can easily talk to each other in Lisp.
After more than a decade hopping around different environments, I decided computing is better done in 3 platforms. Emacs (for nearly everything), a web browser (just for hypertext) and a terminal (to deal with plumbing, Unix in my case). I've tied everything together with a tiling WM. I find it is a lot saner than using little CLI or GUI silos.