Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

How do you get started on learning all that? I’ve never come close to getting such productivity out of Emacs.


Hmm... well, it's of course very difficult to explain the process in a single comment, besides, there's no exact prescribed "recipe" for it, unfortunately.

I'd say the mental model for developing the 'Emacs way of thinking' lies, first and foremost, in realizing that Emacs is not "an editor that uses Lisp for configuring it," but rather a 'Lisp Machine' - calling it that would be a stretch, of course. Allow me this simplification here. Emacs is a 'Lisp REPL' that has a built-in editor. That means, instead of focusing on the features of the editor, it's better to study Emacs Lisp and the ways of using it to shape the editor's features.

The great way of developing knack for Lisp is to start with figuring out mainly two things: first, is so called "REPL-driven development". For Elisp that basically means learning the ways of evaluating symbolic-expressions: https://www.gnu.org/software/emacs/manual/html_node/emacs/Li...

Second thing, even though some experts would argue for being optional, I still believe is very important - structural editing commands: ways for quickly moving symbolic expressions around, expanding and transposing them, etc. - you do want to control those (seemingly pesky at first) parenthesis. There are multiple different ways of dealing with those - paredit, smartparens, parinfer, etc.

Then, learning how to effectively search through built-in help, finding the functions, commands, variables, etc. - the stock features already good, although the keybindings and navigating through them might be confusing, there are different packages that can help - consult-info, helpful, etc.

And then, one basically has to get annoyed by small inefficiencies in their workflow. Examples? Do you often have to copy&paste the url of the current tab in your browser while typing? Seemingly simple activity, still requires you to: switching to the browser, focusing on the address bar, copying the url, switching back to the editor, pasting the url, sometimes, it doesn't end there, you need to switch back to the browser, copy the description of the page, switch back to the editor, paste the description, wrap things in a markdown-type of link, etc. Most people would say: "what a nonsense, it's not a big deal, like at all...". But if you think for a minute, how often do you have to do that? Every day, during the lifetime of your computer use. These kind of small inefficiencies are not really distractions for the brain, in fact, that all is over-stimulation of neurons. You may think that you've done that so many times, it actually happens so quickly, you don't even think about it, yet, it still forces your brain "out of the zone", even though might be just for a second.

Another personal example: at some point, I got annoyed by my own typing - I make typos all the time, so I needed a quicker way of automatically fixing typos as I type. First, I wrote a command that does that, and then I bound it to a key - to a double tap of the comma. I'd be typing, and typing, then a typo gets highlighted, I'd quickly tap comma twice and it gets fixed with 90% of predictability. Sometimes it would guess a wrong word, and then if I keep pressing the comma, it would cycle through variants. It feels great beyond words, and it is so instinctive and fast, I don't get distracted at all. Imagine a guitar player with a performance so wild that strings get snapped every few seconds. Imagine that instead of having to replace the entire guitar, there's a special mechanism on it that quickly installs a new string and tunes it up immediately, so the performance goes on without any hiccups. That's what using Emacs often feels to me.

So, my personal advice - simply be annoyed by small things. Then, put them on your TODO list. At some point, you'll get annoyed again and again. Note it each time. And then, try to find a better way to do that thing. The rate of getting more productive is proportional to the level of accrued annoyance.




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

Search: