You may have read my thoughts on why people should learn to code with a good CLI environment at hand.
I’ll one-up myself – it’s good to have emacs at hand.
You have all the features of the shell – well, you have the shell itself, if you want to. But you have even more extensibility, because you have other aspects to work with than apps: you have text editing as a programmable activity.
So besides having and being able to easily create tools to work on data at one level (files), you have and can easily create tools to work on data at another level: content.
So, emacs is not necessarily the only environment which one-ups a good CLI, but it’s the one I know and I can get behind.
What’s so special having the content editing be programmable is a layer of power further from tweaking your environment and adding tools to your toolbox. This is like tweaking the toolbox, so that you can have some tools work better.
The effect is so strong that people who work with emacs often find themselves more and more working from within emacs. So you don’t have an environment from which you call the editor to do some work with. You have an editor from which you work, and as code is text, you have a powerful tool in which to build powerful tools to better build powerful tools.
This is highly desirable.