Keeping those small utilities separate is definitely the right
choice as it keeps everything very flexible. I could just
replace grep with ripgrep in my workflow and suddenly get a
drastically quicker search without having to change anything
else. If all those features were integrated in the shell the
user is more or less stuck with the whole package.
Which is also one of the reasons I prefer using Vim over Emacs;
I can embed Vim in any terminal multiplexer of my choice and
combine it with various terminal programs. Every single part
of that environment is easy to understand and easy to replace
with another program or script. It's less homogenous and
consistent, but I am fine with that tradeoff. As one might guess
I am not a big fan of IDEs.
Which is also one of the reasons I prefer using Vim over Emacs; I can embed Vim in any terminal multiplexer of my choice and combine it with various terminal programs. Every single part of that environment is easy to understand and easy to replace with another program or script. It's less homogenous and consistent, but I am fine with that tradeoff. As one might guess I am not a big fan of IDEs.