Hacker News new | ask | show | jobs
by iLemming 518 days ago
> they had their time which is long gone

Haha, yeah, sure, but of course, no! Similar shit has been said so many times since 1990s. Yet both Vim and Emacs still have vibrant communities, have dedicated conferences, they get mentioned almost every week - here on HN, and every day on Reddit.

Emacs, in experienced hands, absolutely kicks everything out of the ballpark; it's just hands-down the best tool with unmatched text manipulation capabilities. Anyone who says otherwise simply is unaware what you can do in Emacs.

Can anyone in the grand community of VSCode users claim to have a workflow that involves:

- Reading a pdf where the colors match the current color scheme? The scheme that automatically adjusts the colors based on time of the day (because Emacs has built-in solar and lunar calendars)?

- Where they do annotate the said pdf in their notes, where you can jump to the places in pdf from the notes and vice-versa? Where you can scroll the pdf, without even having to switch windows, because you're in the middle of typing?

- Where you can open a video and control its playback - pausing and resuming it in place, directly from your editor, whilst typing?

- Where you also extract subtitles and copy some text chunks for your notes? Where you can run LLM to extract summary for your notes of the said transcript?

- Where you can resume the video-playback at some position in the transcript? Where you can watch the video and chunks of the transcript text get automatically highlighted - the karaoke style?

- Where you can simply type 'RFC-xxx' and despite that being a plain text entry, Emacs intelligently recognizes what that is and lets you browse the RFC entry, in-place, without even googling for it? Or similarly have plain-text of e.g., 'myorg/foo#34' and browse that Pull-Request and even perform the review with diffs and everything?

- Speaking of googling, can you type a search query only once and let it run through different places, finding things in Google, YouTube, Wikipedia, DuckDuckGo, GitHub, your browser's history and personal emails? Or any other places, since it's highly configurable?

- Do you use translation, dictionaries, thesaurus, etymology and definition lookup for any words and phrases, in the midst of typing? I have bound "auto-correct previous typo" to a double tap of the comma key - it's super convenient. Can you do something like that in VSCode easily?

- Do you edit code comments and docstrings in the code, treating them as markdown - with all the syntax highlighting, preview, and other perks?

- Do you have embedded LaTeX formulas directly in your notes?

And that's just a tiny fraction of things I personally do in Emacs - it's just the tip of the iceberg. There are tons of other interesting and highly pragmatic Emacs packages people use for various kinds of tasks. Speaking of packages - my config contains over 300 different Emacs packages, and I still can restart and load it under a second. Can you imagine any VS Code user having installed even half of that many plugins? Would that still be a "workable" environment?

1 comments

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.