3 ms·
I tried out Emacs when I started learning Clojure (through Clojure for the Brave and True[0]) and didn't find it at all usable. Remembering the various chords w
by lilactown 9y ago
I tried out Emacs when I started learning Clojure (through Clojure for the Brave and True[0]) and didn't find it at all usable. Remembering the various chords was at best obnoxious and at worst, a huge productivity loss. It felt like it would take weeks or months before I was even close to productive.
Later, I tried picking it up again, but this time chose spacemacs. Hoooly crap, what a difference.
1. Discoverability. The helm UI is better than any docs, since it's there when and where I need it to find the thing. It also provides the ability to search for arbitrary commands, which is great when you're learning a new mode or layer.
2. Modal editing. I wasn't a vim user before, but spacemacs has converted me over to the modal editing camp. It makes a ton of sense now and is a joy to use alongside Emacs' power.
3. The layer system is way easier to use than ELPA directly and takes most of the pain of configuring packages away.
For someone who wanted the power of Emacs without having to touch the insides, spacemacs is wonderful and has fully converted me over to using it everyday!
[0]: https://www.braveclojure.com/ https://www.braveclojure.com/
- pasabagi 9y agoWhat actually is the power of emacs? I just ask because with vim, I can easily describe why I like it - it has about a billion cool and useful text-editing features arranged in a way that makes them easy to use. I understand Spacemacs replicates basically all of these features - but what's emacs adding to this? I've tried spacemacs several times, and each time I've been stopped by not really being able to find anything, aside from org-mode, there's nothing there that justifies the (relatively) slow loading times and generally heavier overhead of emacs.
- lilactown 9y agoGreat question. For me, Emacs ended up taking the place of a number of tools I use daily: 1. Text editing (obviously). spacemacs provides nearly any nifty trick that vim would give you for text editing (and like I said, I'm a believer in the way of modal editing). 2. HTTP client. Emacs has a package called "restclient" that allows you to write what amount to cURL commands - in plain text, with documentation - and execute them in-line within my editor. Other teams I've been on use Postman, which is great, but I like the fact that I can save the file and commit it alongside our services/tests/etc. 3. Note taking & task lists. Org-mode is Emacs killer app. Honestly, I'm still pretty fresh to this whole "being organized" thing. But already I'm finding myself writing more and more notes, TODOs, etc. and it's really helping me on a new project that is complete chaos right now. 4. Clojure IDE. Cursive for IntelliJ comes close, but nothing beats the experience of doing Clojure development in Emacs. Since my team adopted it as our daily workhorse language, I've never had a moment where I wanted to leave Emacs. It's integration with the REPL and LISP in general makes it the most powerful programming environment I've used to date (YMMV). There might be more... the point is that Emacs is more like an application platform than a text editor, and it has some really powerful applications that have been developed for years. I now have this strange urge to do more and more inside of Emacs, if only because it gives me a common interface into my workflow. EDIT: Forgot, magit for doing git operations. Great interface and I only (very very rarely) need to drop down to terminal to do things now.
- smellf 9y agoSo I've never really used emacs... but I'm not really sure I understand why a text editor would need all these things? Like, why do you want an HTTP client in your text editor when you already have wget, curl, nc, etc available in your shell? It kind of sounds like emacs was incorporating anything remotely related to it before systemd came along and made it cool.
- lilactown 9y agoThat's why the joke "Emacs is a great OS, if only it had a good text editor," lives on and has a kernel of truth. It's really not a text editor, it's a LISP VM. It also does actually have a pretty good text editor out-of-the-box. It's why the vim vs. Emacs "war" isn't really a fight over text editing, but an ideological battle of "one tool that does one thing well" vs. "one tool that has everything I ever need." Personally, I find integration a huge selling point, and the Unix pipe interface leaves a lot to be desired. Writing some elisp code, or (preferably) installing a well-documented layer/package, is preferable to me. The specific tools I need also happen to be well supported in the Emacs ecosystem.
- BeetleB 9y ago>but I'm not really sure I understand why a text editor would need all these things? It doesn't. But thinking of Emacs as a text editor is like thinking of Firefox as a document displayer. >Like, why do you want an HTTP client in your text editor when you already have wget, curl, nc, etc available in your shell? There's a reason to prefer using these in Emacs over the shell. It is because Emacs is a better embodiment of the UNIX philosophy than the UNIX shell itself is: >Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new "features". A lot of standard UNIX tools are laden with features. But well, that could be said of Emacs as well. >Expect the output of every program to become the input to another, as yet unknown, program. Emacs does this much better than the UNIX shell, in my experience. The level of consistency you see in the Emacs ecosystem just doesn't exist in UNIX. With UNIX, you really are feeling like you are gluing stuff together. With Emacs, it feels much more natural.
- Jtsummers 9y agoEmacs covers more than just text editing. To be honest, if I just wanted text editing I'd probably stick with vim. But emacs is a live, extensible, programmable environment. I essentially run applications on top of it (magit, org-mode, IRC via erc) and interact with other environments through it (common lisp via slime, erlang). And it happens to have (for me) a pretty good text editor (certainly better than most IDEs have, though arguably not as good for some tasks as vim but I am used to it). The loading times aren't slow if you run it in daemon mode (as I do now) or strip down your .emacs file to its core (so you only load what you need for the files you're editing).
- Myrmornis 9y agoIt’s that nearly the entire runtime is executing as lisp code that you can modify dynamically. There’s no boundary between your code and the editor code. So the experience is that your text editor is written in your code and that you can change any aspect at the drop of a hat.
- weaksauce 9y agoThink of it this way, Emacs is powerful enough to let someone come in and write a very powerful plugin that lets you use vim inside Emacs. That power is then translated into other equally powerful and well written packages for Emacs. Org mode is great and can do an absolute ton. Magit is the best git interface I have ever used and I have used a ton of them. Evil mode is an almost complete vim and I consider myself to be a pretty power vim user and have used it for many years. Helm is amazing at searching through lists of things and enables other things like swoop(also amazing) which takes your file and puts each line into a temp buffer and let's you search for lines in that file. Say you wanted lines matching foo and bar all you do is type 'foo bar' and it updates the list of matches in real time. If you move your cursor over any of the matched lines it jumps to the context in the file. If you hit escape it goes back to where you initiated the search, if you hit enter it jumps to that line in the file and dismisses the dialog.(actually a temp buffer that you can edit later if you wanted.) irc, terminal, email, a slew of other things that are treated as normal buffers that you can use all your normal editing commands in. The entire editor is introspective and customizable as everything is a function that you can bind contextually and most are written in Elisp. That's the power and I am really only scratching the surface. Hop onto the spacemacs gitter chat and ask any other questions you have. Edit another invaluable one is 'which key' that tells you what the next available key strokes are once you press something that is the start of a multi key chord. In spacemacs this is used to great effect with the space bar starting most of the non vim leader keys actions. These are also easily remembered because they usually start with the same letter as the idea. 'Spc b' is the menu for all the buffer actions. Spc p is projects, Spc f is files, Spc a is applications, Spc s is extra searching functions.
- antoineMoPa 9y agoText editing: macros, rectangular editing, CTRL-{a,e,k,y} to move fastly in a line without changing modes like in vi. Opening remote files via ssh. Also: window splitting, web mode, eshell (a shell that behaves almost like a text buffer so you can go back and copy stuff, CTRL+B to move up) Also: tetris (M-x tetris)
- akmiller 9y agoExtensibility. Every command, even pressing a letter, has a corresponding function. Utilizing ELisp you can essentially make the editor do anything you want (and because of that and how long it has been around...everyone has already made it do anything you could want).
- Derbasti 9y agoSimple: It is programmable, and built for maximal extensibility. I know of no other environment (including e.g. Python) that is as malleable as Emacs. In the end, this will lead every user to make Emacs their Emacs. It will become different things for different people, to the point where it may be barely recognizable as Emacs. That is the power of Emacs. It can be whatever you want it to be.
- BeetleB 9y agoI think you have a number of answers already, but saying "aside from org-mode" is throwing away too much. Many people do not leave Emacs purely because of org mode. If you've used the Ipython notebook (i.e. Jupyter), realize that Org Mode had much of that capability before the notebook existed - and it works for many languages, as well as across languages (you can send the results of a python code block to a C++ code block). When I wanted to learn Haskell, keeping notes in Org Mode was great. I would put in a code block, and add notes on what the code would do. Any time later while reading my notes, I could interact with those code blocks and fiddle around with it to check that my understanding is correct. I then exported the file to HTML, and I now have very nicely formatted notes for Haskell (or C++, or whatever language you like).
- michaelmrose 9y agoTo avoid slow loading times use daemon mode where you load an emacs server once at login and then start any number of clients instantly. You also aren't stuck with one window.