12 ms·
Emacs is an enormous investment but every time I'm forced to use another editor or IDE I'm reminded how much it pays off. Fundamentally, all Emacs does is treat
by thom 6y ago
Emacs is an enormous investment but every time I'm forced to use another editor or IDE I'm reminded how much it pays off. Fundamentally, all Emacs does is treat the whole world as text. Everything from that point forward is about giving you (or allowing you to build) tools to manipulate text in a way that is natural and powerful for you.
This doesn't sound particularly earth-shaking, but it really is. Think of a language like Ruby or especially Clojure, where there are a few core data structures, but many things that leverage them. This means that every time you learn part of the Ruby Array API, or a useful function to work on Clojure sequences, you get to use that _everywhere_. So all of Emacs' basic interactions (and they may seem weird to begin with but they're honestly just trying to save your wrists some pain) work everywhere. You can always trust your intuitive, spatial model of the thing you're looking at. Search backwards in a text file, find some text, select it, copy it, go back to the end and paste it. That works exactly the same in a shell. It works exactly the same in a database client. Or SSH'd into a server. Or replying to an email. Same gestures when entering commands, same gestures moving around in autocomplete popups.
Everything you learn with Emacs (and later, everything you write with elisp), has a little incremental benefit to your power and productivity manipulating text. Except everything is text, and so it all multiplies together.
For whatever reason, I've been trying VSCode on Windows the last couple of weeks, coming from an Emacs on Linux background. I cannot tell you how painful I find it, even after making a pretty good attempt to map all the keys correctly (snarky sidebar, sorry: every editor and IDE has really good Vim key bindings, but terrible Emacs support. I used to feel bad about this until I realised it was a sign that Vim people clearly didn't use Vim that much, whereas Emacs people never leave Emacs). But VSCode begins at a completely different level of abstraction to Emacs. It doesn't want to show you a text-based UI everywhere, and implement tools to manipulate text. It wants to show you windows and panels and configuration screens and extensions with their own behaviour. Everything is modal and different, some windows are special, and you can't just navigate around the same way everywhere.
So, sure, this isn't for everyone, but it's what I love about Emacs, to the point that the many regular indignities it forces on you (hangs if you're not careful about large files, abysmal performance of various things on Windows because of the overhead of starting processes, and sure, the learning curve for some people) are bearable because everything is so natural.
- kamaal 6y agoEmacs is suffering from the same problem Perl is suffering offlate. Emacs was invented for a world where Text was everything. These days programming languages are designed around tooling. This is very much true for languages like Java, Python, Go. The programming tool needs to have a lot of sane builtin defaults and extensions. The other problem is speed of typing is irrelevant if you are working with libraries all the time, which is basically what most of the programming world does. This is also true in part for vim. The whole idea of one having to press less buttons to move text around is really a solution for a problem that doesn't exist in the modern world. Emacs is still very good in things like Keyboard macros, and M-x Occur etc. Basically text manipulation stuff. The thing is that kind of text manipulation work isn't common anymore. Having said that, I'd be very happy if there was a good default keyboard macro system in vscode. Or in general some emacs features ported to vscode would be really neat. Some features in emacs would make great feature ideas in vscode.
- clojureyoureyes 6y ago> Emacs was invented for a world where Text was everything. Text is still a large part of computing. > These days programming languages are designed around tooling. Every time I see a language which requires a lot of tooling to use it comfortably, usually it's bad designed one > The whole idea of one having to press less buttons to move text around is really a solution for a problem that doesn't exist in the modern world. I think the idea is not about having to press fewer buttons, but to bother your brain with unnecessary things as little as possible. With Emacs, you don't have to remember "where the hell is this command and what is the shortcut for it?", you type M-x (especially if you use plugins like counsel or helm) type some related words and that's it. You don't have to know how every function works - M-x decribe-function at your service! Not enough? You can always jump to definition and take a look at it. > The thing is that kind of text manipulation work isn't common anymore. You still write programs in text, the commands you give to computer ARE text too, even "modern" menus are nothing but text. > The thing is that kind of text manipulation work isn't common anymore. Emacs has LSP plugins, if that's what you are talking about > Or in general some emacs features ported to vscode would be really neat. Which features does VS Code have but Emacs don't?
- 6y ago