Proficiency is absolutely key. I was troubleshooting a feature with a Jr the other day and asked him to search through the log out put (that was currently being displayed on his terminal). Unfortunately he was trying out a new emulator and didn't know how to actually search the output.
We went about it a different way, but at the end I just told him it didn't matter what tools he used as long as he actually knew how to do what's required with them and to please get that figured out for next time.
I learnt Emacs years ago, it's very helpful to the day-to-day terminal use, however if I could go back I would learn Vi instead, it's better for pinky strain.
I really wish more text editors being actively developed in the present day would take advantage of the IBM CUA standard that has been embraced by Windows and (Desktop) Linux since basically the early 1990s.
emacs. If you want vim keybindings there is a mode in emacs called “evil-mode”. If sticking with pure emacs I recommend rebinding the caps lock key on your keyboard to control.
Both because they are the ultimate tools in maneuvering a terrible, terrible development environment. For reference, Sigasi Studio costs 2,000$ PER YEAR, and it still doesn't work for our dev environment!
Let me paint a picture: Corporate job that won't let you download anything except whatever you can smuggle through a git checkout. It took a month to convince IT to download vim 9.0 on the server. The programming language? VHDL and SystemVerilog and UVM. Horrible language support that relies on proprietary compilers/simulators, and always the ones you aren't using. The one you are using is so obtuse that it has literally 50 configuration files for a single project. All of it is run with a janky python script with half of the flags not working. LSP support is out of the question since it dynamically pulls files from god knows where with at least 10 layers of ../ relative pathing.
All I can do on vim is
ctrl+p for fuzzy file finding and a massive blacklist of intermediate files to ignore,
a custom :Make command with custom errorformat that you can navigate through,
Universal Ctags with per library indexes to reference those far off files,
and a fuckton of grepping for when Go To Definition (ctrl+]) grabs the wrong location.
Vim's autocomplete is almost always good enough. If my laundry list of plugins break, I can literally fix them on the spot and even submit the merge request on github. If you take into consideration all of this configuration and learning effort, I still save hours of navigating through the hundreds of files I have to essentially reverse engineer. My coworkers are all electrical engineers and it shows They're using godforsaken nedit with no syntax highlighting...
I prefer (neo)vim because it uses the same bindings as vi, which is on every server with a decent OS since the 70s (except maybe some exotic ones like 9P). But emacs is also a good choice. So, I'm going to go with "both".
Honestly, Vim is too heavy for me. I wish I could get a reasonable text editor with:
No built-in programming languages.
Vi(m)-style modal editing and keys.
No GUI. Terminal is good, thanks.
Not a lot of moving parts.
Infinite undo. (I'm ambivolent about an undo/redo "tree" feature like Vim has.)
Visual mode like Vim has.
Simple syntax highlighting would be a plus, but not a must-have.
Stable. As in doesn't crash.
Vim fails on #1, #4, and #7. (It has syntax highlighting, but not simple highlighting.)
I usually just use the vi that is pre-installed on Arch Linux. (I use Arch Linux btw. Bite me. 😈) But it fails on #5, #6, #7, and #8. (It segfaults randomly a lot.) But I guess those issues haven't been deal breakers enough to make me switch to something else.
I have used nvi in the past. I ended up leaving it for the Arch pre-installed vi. Don't remember particuarly why now.
Maybe one day I'll write my own text editor and ascend to full neckbeardhood.
Vim, I've not given emacs a fair try yet. At work I've got to use what I've got to use and neither is an option. At home the last thing I want to do is write more code.
When I do have a choice I'm not doing much more complicated things than editing a config file and anything more advanced than cat would do I guess.