Hacker News new | past | comments | ask | show | jobs | submit login

There is no "learning" Emacs in a traditional sense, as there is no linear, structured, or categorized methodology. Emacs is vast, learning it is similar to learning a human language. Most of the time when people ask how to approach Emacs, it is like asking "how do I learn to move and live in Brazil," to which the appropriate suggestion would probably be "hmm, maybe start by listening to Portuguese?"

Imagine if there were a browser or a graphics editor where you could change any aspect of it, not just the UI - the look and feel of the elements, but the entire behavior of each element. Imagine if you could "screenshot" the current workspace in this "hacky, recursive Photoshop," then erase, repaint, and resize the panels, menus, buttons, etc., apply it, and then suddenly the whole UI transforms. Emacs feels like that, you can change just about anything - how it looks, how it behaves, and even how it listens and speaks. But to get there, you need to know Emacs Lisp.

So, my suggestion to understand Emacs is to learn Emacs Lisp. If you have never used any Lisps before - Clojure, CL, Fennel, or Scheme, there are two fundamental things you need to understand first. This is vital because without these, it's almost guaranteed to get frustrated. First, you need to learn to love the parenthesis, embrace the structure, and learn structural editing. Second, you need to understand the REPL-driven way of writing Lisp programs. Other languages have REPLs, but Lisp REPLs are different. Grasping the way to evaluate any expression at the point is essential.

After that, I suggest starting to write Emacs Lisp. Pick a problem to solve and try to figure out how to do it in Elisp. Start with something small, maybe not even very practical, like uppercasing every second letter in a paragraph. Eventually, you will learn how to use built-in help, debugger, and profiler and maybe even write your own Elisp packages.

The value of learning Emacs Lisp is that it forces you to develop a "hacktistic" mindset, where you are certain that any aspect of your computer workflow - any program, any interaction can be changed. You will no longer have to agree to "the status quo." Instead of helplessly yelling at your computer and hitting the screen when things don't work as expected, you will gain insight into knowing why things don't work. This wisdom might not alleviate the pain, but it will give you the insight.

Don't try to learn how to stay afloat on the surface; learn how to swim deep in the ocean - it will open a world of possibilities.




I understand that the comment above doesn't answer your actual question. I deliberately decided to split my answer into two parts - first about learning Emacs. Now, let's talk about Vim, etc. Vim navigation is amazing, fantastic, and a highly practical model. As someone well-versed in both vanilla Emacs and vim-style, I highly recommend not abandoning it in favor of Emacs' built-in way. Yes, it is beneficial to learn Emacs native keybindings because they are ubiquitous - on Mac and Terminal, readline, etc. Some Emacs key-combinations are nicer than Evil's, but in practical sense, overall, they are inferior to vim-style navigation.

The biggest pain about Vim navigation is that there's no "true vimming" outside of Vim and Neovim. Every single editor that tries to simulate it to a fuller extent has repeatedly failed. Every single Vim plugin for VSCode, IdeaVim plugin for IntelliJ, Sublime plugins, etc., they all have glaring deficiencies compared to the actual Neovim experience. With only one exception - Emacs. In fact, Emacs can and does vim better than Neovim.

Do try Doom Emacs or Spacemacs, at least for a while. Once you grasp the mechanics of stitching different packages together, learn hooks and advising, fearlessly start redefining the keybindings, maybe then you can decide to build your config. But maybe Doom will provide everything you need. Give it a try, it is really good.


Thanks for the very thorough response(s)… now, a question, what’s the most basic and minimal bootstrap config of emacs (possibly within Doom) that sets a relative lisp-newbie up to effectively work with elisp inside emacs?

I’ve used lisps, I’ve never used lisp REPLs, and while I hear the beauty of emacs is getting to the point where it’s your terminal and your IDE, it’s non-obvious how to get up to running like that even in its own language.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: