To this day, I have tried lots of IDEs and text editors. Visual Studio, PyCharm, Sublime, Notepad++, Vim, Emacs, Pico, Atom, etc. The list goes on. I have even unironically used ed, and ironically used cat for a while.
I have settled down after years and years of “editor-hopping”. I now have 3 main editors that I use on a daily basis! Yeah, you have read it correct. I use 3 editors on a daily basis. Those are,
- vi (not vim)
Emacs is a beast. Defining Emacs as a text-editor is wrong. It is a lisp interpreter, with text manipulation abilities.
Now, I do like the concept of Integrated Development Environments. It's a shame that all of them suck. With Emacs I can fine-tune everything according to my taste, install the packages I need, configure them the way I like. With IDEs you get some nice plugins, and a tiny bit of customization, but that's it. You get an environment limited by the vision of someone else. Not to mention that most IDEs are proprietary software.
I have stopped using Vim, because it is only meant to be a text editor. You can extend its features with plugins, but you can really see the impact with just a few of them. Vimscript is also really primitive, that's why people write plugins with Python, JS, and such. This further affects the speed of Vim. Most Emacs packages I have encountered are written in pure lisp. I have over 70 packages, yet my load time and overall speed is better than when I had Vim with 8 plugins.
- It comes with too many unnecessary features: Emacs comes with multiple IRC clients, a mail reader, rss reader etc. I don't think they are badly implemented or anything, I would just prefer building up as I want to instead.
The defaults are not intuitive: Now, I haven't actually tried any of them, but there is a reason “Emacs distributions”, such as “Spacemacs”, “DOOM Emacs”, “Centaur” exist. The base of Emacs, even with its unnecessary features, is unintuitive and complicated.
Let's not forget that Emacs uses an ancient Lisp dialect.
I mostly use Emacs when I am dealing with projects. If my aim is to just make simple changes when I am on the terminal, I just pop up vi provided by busybox. I just like that it is fast and featureless. It barely gets the job done, and that's why I like it.
- No syntax highlighting.: Syntax highlighting is an important feature for me but I have learned to live without it. Since I don't edit large files with it, this is not the biggest con.
- Hard to configure: Busybox vi only has a limited featureset, which makes it hard to configure. It doesn't read an
rcfile, it uses the
$EXINITvariable instead. Available options are limited. For example, you cannot convert the “tab” action to use space instead of tabs.
- No visual selection support: Sadly,
v/Visn't implemented in busybox vi.
I use sed for when I am making small changes to small files, because it is faster than opening a file, making a change, saving, and exiting. Using regular expressions are much faster and efficient at such things.
- Risky unless you know what you are doing: Since sed is operated on regex, you need to be extra careful. You are running that regex on the entire file without an option to 'undo' (unless you have a sed that has a backup implementation).