Why I Use Emacs
shayelk.in
shayelk.in
The reason why I'm so upset is, if you are a newcomer and look at Emacs what you see at first glance on the outside is basically total crap. But then people tell you that the learning curve is high and everything is awesome if you just learn.
Well my experience was, the more I learned the more crap appeared. One layer of crap after the other. Luckily everything could somehow be fixed with a lot of configuration and scripts. But the points I mention above are the lowest layer which can not be fixed with just a bunch of lines of Lisp like in the previous layers. So even at the core Emacs is crap.
I'd have a hard time using Emacs for a large project, especially one that is contributed to by many different people. IDE's just make life so much easier. The people who disagree with that statement are typically the Emacs (or VIM) gurus who have customized it so much that they would probably die if they had to use a stock installation.
Modes definitely add complication, but again, that's why Emacs is so customizable. It takes time, but you can set things up to where it's the best experience possible.
However this is trivially fixed because in Emacs everything is configurable. Keymappings are very easy to change (I'm using my own, completely custom ones, in my own keymapping minor-mode). There's also the "evil mode" reproducing the very superior (compared to Emacs) vim keybindings. So it's not true that they cannot be fixed. Not only can keybindings be fixed but a) they should and b) it's trivial to do so.
I'm using my own minor-mode which contains all my keymappings. Doing it that way you'll hardly ever have conflicting shortcuts.
evil-mode is an option too for people who want the (way better) vi(m) keybindings.
That being said, Emacs has already forced me to re-learn basic things like copy/paste and search/replace. I don't want to question my workflow on such a low level in 2014, when there is much higher-level IDE stuff to learn (code completion engines, refactoring, "jump to definition"). Alas, such features are not language-agnostic, they are tricky to set up and not standardized.
I find discussions about keybindings quite derailing from the higher-level discussions we should be having instead.
I agree with the language support. There might be better editors for every single language. But overall its the editor I like most of all I tested and used.
I don't know LISP very well and can't compare the speed to others. Yet emacs feels snappier than all the modern editors I've used. Probably just because it doesn't use fading effects and such nonsense.
And I'm not some beardy programmer from the punch card ages. Hell, the editor is older than me. But I do configure the shit out of tools I use every day. On that road, I haven't come to any limits in emacs.
I would never recommend it for a newcomer nor to people that want out of the box solutions for a specific domain.
I most recently tried sublime text, and it was okay, but it fell over in some pretty serious ways with basic stuff. Like indenting -- I'd have to go back and find the problem again, but there was a ridiculous indentation problem that was a deal-breaker, and the response from the ST community was, essentially: "I don't know anyone who indents that way, so we're not going to support it."
OK then. Back to emacs. It Just Works.
It just feels good. Do it today!
*
* References:
* https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/EventOverview/TextDefaultsBindings/TextDefaultsBindings.html
* Above is Apples Documentation on the subject which is Mandatory reading!
*
* Mandatory reading as well: http://www.hcs.harvard.edu/~jrus/Site/system-bindings.html
* This page lists Apple's keybindings and standard keyboard functionaliaty to a further extent than Apple's documentation further above.
*
* A Must read concerning customizing the cocoa text system: http://www.hcs.harvard.edu/~jrus/site/cocoa-text.html
*
* *Very Useful Page* when you want to make your own bindings: http://www.hcs.harvard.edu/~jrus/site/KeyBindings/Windows%20Bindings.dict
*
*
*
* http://www.cocoawithlove.com/2009/12/multiple-copy-buffers-cursor-and-tab.html
* Above mostly for how to utilize the kill-ring, which doesn't work well with the setup here,
* and it is focused towards XCode, which has it separate keybindings file, but works after the
* same principles. Beware: XCode uses a string list, instead of array. It is important to
* keep the space after the comma!
* "select:", "do someth:"
*
* http://wttools.sourceforge.net/emacs-stuff/emacs-keybindings.html
* Above is a keybindings table, which is of use only to see the keyboard shortcuts.
* The commands we use on OS X is not named equivalently to Emacs.I spent years using Eclipse, and even though I now concede that IntelliJ is superior, it still took quite awhile to get up the learning curve and let go of my Eclipse bias. If you write a lot of code in any language, then you invest a significant amount of time and energy into learning how to maximize productivity in your tool of choice. That tool is then the best tool, because you are invested and most productive with it.
My basic attitude has been unchanged for fifteen or twenty years now: programmers need programmable editors because they can be more productive when they are comfortable; sysadmins need an editor which is installed on every system and works the same way by default.
emacs is pretty good, and was what once heavyweight is rendered small and fast by the march of technological progress. But if you, as a programmer, want to devote yourself to becoming an expert in something else, go right ahead.
I'd say it took me only a few minutes to get the hang of vim, but several weeks of regular use to really appreciate it. I have never given emacs the same opportunity simply because I've never felt the need to leave vim. But I certainly would do so before I recommended vim over emacs to anyone else.
I really did try, but the experience left me wanting, and made me realize I'm never going to try another editor ever again: I'm just not ready for another four months of hate directed at my main working tool before I'll revert to the One True Editor™.
Seriously?
The first few weeks are filled with things like "Why is (d)elete cut?! I want to delete it, not put it in the buffer! And why do I have to push 'd' twice? This is stupid." or "Who thinks (w)rite makes more sense than (s)ave?"
But then over time, I started internalizing the commands and whenever someone else would echo the same complaints back to me, I'd usually find myself responding "Well, vim is pretty old, so you have to forgive it for not being up on modern terminology. If you just remember the keywords, it usually helps a bit. Plus a good configuration makes it a lot easier to use!"
Now I'm at a point where I find myself hitting ":wq" more often than not regardless of whether I'm actually in vim... and I started looking up ways to use vim keybindings in Sublime Text.
Ugh. For the sake of completeness, then, let me add mine here:
Conclusion
From time to time, a new editor is being hyped. It might have a good list of features, in a shinier UI than your current editor: but unless it clone each and every feature you use, you'll probably just waste your time trying to get used it to it, and it's better stick to what you're used to. Remember, it's a tool, not a jewel.