Back

Master Emacs in one year

106 points16 hoursgithub.com
textread4 hours ago

  Since Steve Purcell loves new technologies and update his setup
  frequently, it may be a little harder to follow him for beginners.
  
  That’s actually great. I’m lucky to stick to his setup because pulling
  from his git branch gets me updated with the latest cool things in
  community.
  
  When I say “on the shoulders of giants”, I’m stressing that you need
  set your standard higher. I’m NOT saying the master’s setup is “newbie
  friendly”. If it happens to be “friendly”, it’s just the coincidence.
I just perused through the tutorial. This is some horrible advice, IMHO.

Also, cargo culting everybody to use the Evil mode for Vim bindings in Emacs is also probably bad advice, unless you are teaching emacs to a vim user.

As a beginner, you are better off starting your emacs config from scratch.

Some of the opinions of the author have been stated as facts:-

  ...every master uses the package smex to remember keybindings
In my opinion, as of 2023, the best way to learn emacs the right way is through the textbook 'Mastering Emacs' by Mickey Petersen. Trust me, that book is well worth the price tag.

Mickey walks you chapter by chapter, while you build your own emacs configuration as you learn new things.

Once you have worked through that textbook, you will find it a piece of cake to study other people's configurations on github and learn more.

If you are looking for motivation to learn emacs, watch the short 2 minute demo videos on the Youtube Channel @EmacsRocks

kickaha49 minutes ago

In my opinion, as of 2023, the best way to learn emacs the right way is through the textbook 'Mastering Emacs' by Mickey Petersen. Trust me, that book is well worth the price tag.

Strongly second this opinion!

Mickey Petersen simply has no equal in explaining Emacs. His book and blog posts are a model of effective teaching, starting from zero. Yet somehow gently ceomprehensive. Hard recommend.

avindroth3 hours ago

Emacs from scratch is the way to go. Added abstractions are usually not good enough to completely replace fiddling around with vanilla Emacs.

NelsonMinar1 hour ago

Alternately, spend a weekend learning VS.Code and get on with doing real work.

(I spent 20+ years with emacs, including writing one of the first popular HTML modes in 1993. We have better tools now!)

Koshkin54 minutes ago

Often, I enjoy running emacs (and vim) in a terminal. (And, by the way, as we all know, “VSCode” stands for “Eight Gigabytes And Constantly Swapping.”)

mkl956 hours ago

Becoming productive with Emacs should take you a couple of weeks. At least that's what it took my dumb 19 year old self back in the day. Mastering emacs? I don't think you should be expected to do such thing.

BeFlatXIII4 hours ago

> At least that's what it took my dumb 19-year-old self back in the day

That's the one thing I miss about being a teen: few enough other options that I'd stick to things to mastery instead of giving up and reverting to the tools I already know once things hit my frustration threshold.

User233 hours ago

Back in my larval stage I adopted Emacs because it was considerably more “intuitive” than vi and wasn’t a joke like pine. I found it suitable for writing C and xpilots[1] configs out of the box and went from there. It did help that I was mostly in a college CS lab so there were people to ask questions.

[1] http://www.xpilot.org/about/

akho7 hours ago

The content here is that they’ve:

- Done the built-in tutorial;

- Picked up somebody else’s Emacs and a few packages.

That’s two hours, maybe, if you go slow and have a few beers in the meantime. I wonder what they did for the rest of the year.

dang10 hours ago

Related:

Master Emacs in one year - https://news.ycombinator.com/item?id=16424934 - Feb 2018 (5 comments)

Master Emacs in one year - https://news.ycombinator.com/item?id=8079083 - July 2014 (116 comments)

SanderNL9 hours ago

The focus on leaning on “giants” and not being creative is a bit too much for my taste.

I kind of get it, but it feels off.

“Those giants are more intelligent than me. They are harder working than me. How can I reach their level as quickly as possible?”

Not by blindly copying everything I imagine, but I could be wrong.

drichel9 hours ago

"First, you copy the master. Then, you master the master"

Can't find the source of the quote but it was about the Chinese approach to learning.

nsomaru7 hours ago

To follow the path

Look to the master

Follow the master

Walk with the master

See through the master

Become the master

SanderNL8 hours ago

Yes, you copy it (do what they did). Not take photographs of their work.

precompute8 hours ago

I doubt it'd take a year. Just remember, `C-h` is your friend, and there's no shame in using Doom / Spacemacs. Even if you're a vim devotee you can switch full-time to linux, thanks to `evil`. Emacs has a much better GUI than vim / gvim and related.

Starting with vim keybinds, you can be very productive in just an afternoon, because `evil` is extremely comprehensive in mimicking vim. After that, you'd want to learn some elisp, and making small functions with the basic `let` and `interactive` forms will get you up to speed. A year is overkill. You can start being productive in emacs in less than a week.

posed9 hours ago

I’ve been using vim for 3-4 years now, and I’m very comfortable in the vim ecosystem. Trying out emacs has been in my mind for a while, but I’m not sure if it’s worth the time investment.

jmkr9 hours ago

I used (and use) vim for over a decade.

I've used emacs for probably over a year now.

I'm glad I learned modal editing with vim, but with doom emacs there is nothing I miss from vim, except maybe `ctrl-p`, `projectile` isn't as good in certain cases, but it's good enough.

In my opinion emacs is just better for everything, and if you know vim well enough doom will take 10 minutes to learn to use. Those 10 minutes are the install. Most vim commands will _just work_.

phazy9 hours ago

I‘ve also been using vim for ~3yrs now, editing small programming projects and all kinds of text in it (like config files). Never had a need for emacs until a couple weeks ago I started working at a project involving a lot of meetings and writing a TeX report. I experienced that emacs, used in the auctex and org modes, is helping me a lot with that because the available commands simplify the workflow (like `reftex-citation`).

Why has trying out emacs been on your mind, if I may ask? If it‘s just for fun, go ahead. If it‘s because you think aspects of your workflow could be optimized, take a look at the several modes emacs has to offer. Otherwise, I would just stay with vim, tbh.

chungy9 hours ago

Once you go Emacs, you never go back.

chongli4 hours ago

I started on vim. Switched to emacs for a couple years, then switched back.

The biggest issue with emacs for me is ergonomic. It relies way too much on the pinkie finger for everything and it gets really painful when you get RSI in your pinkie. It’s fine if you’re going slow and taking your time with things, but then why learn a complicated editor in the first place if you’re just going to go slow?

Yes, I tried evil mode for a while as well. The problem with that is that it’s, well, evil. An unholy alliance of drastically different paradigms, the setup just becomes way too complicated. You lose the main advantage of emacs modelessness and are back to switching modes like vim, only now you also have all of the emacs key bindings to deal with. Why not just go back to vim and simplify your life? That’s what I did!

G3rn0ti3 hours ago

Well, if your pinky is such an issue why not bind „C-“ to caps lock instead? I‘ve heard many people doing that and be happy w/o the effort of learning the evil mode framework (which I wouldn’t suggest beginners doing despite many prominent Emacs evangelists using evil).

AugurCognito2 hours ago

I have swapped "C-" key with "~". I can type all the "C-key" shortcuts with flat hand and it just feels right(at least to me).

JonChesterfield3 hours ago

It's really easy to use a different key for that. Pretty sure the keyboards it was written for had a different layout to today's off the shelf ones.

sph9 hours ago

I moved to emacs (with its own keybindings) after using vim for a decade.

Learning something new and very different to what you are used to is always worth the time investment. It doesn't mean you have to necessarily leave vim.

ithrow9 hours ago

You can just use it for note taking and as an outliner (orgmode) and keep using vim for programming.

adastra2210 hours ago

There is something fundamentally wrong with a UI/UX that takes a literal year to master. I can’t think of a better argument against learning emacs than the title of this submission.

textread4 hours ago

Would you please show me a tool with a better UI/UX that can do all the things that emacs can do?

Orgmode Magit Dired EXWM . . . this rabbit hole is an endless pursuit of higher and higher efficiency.

BTW, the UI/UX is quite customizable with basic elisp fu, using say Helm, Ivy etc.

oldsecondhand43 minutes ago

I prefer JEdit to Emacs for a programmable editor, but I mostly just use IntelliJ anyway. JEdit carries the philosophy of Emacs, but the UI isn't stuck in the 70s.

diffeomorphism10 hours ago

Nonsense. Just like with any software you can be perfectly productive in an afternoon but actual mastery takes time. For instance, for Microsoft Excel the title would probably be "Master Excel in two years"

otabdeveloper410 hours ago

In reality, Emacs has the gentlest UI/UX of any Unix tool. Emacs has tutorials built-in, is 100 percent documented and all of the moving bits and pieces are discoverable.

blahgeek10 hours ago

It’s a productivity tool. It also takes months or years to master a professional video editing software like Adobe Premier, or 3D graphics software like Blender. People take time to learn because it’s worth it.

adastra2210 hours ago

It’s a text editor, mail reader, todo manager, etc. none of those things should take a year to master, even in aggregate.

diffeomorphism10 hours ago

Yep, exactly. So obviously that is not the case.

Iridescent_9 hours ago

I would not imagine mastering VSCode or any Jetbrains suite product to take any less time.

jb19918 hours ago

This. Jetbrains is also awesome but you don't just pick it up and msater it in short time.

u801e8 hours ago

> There is something fundamentally wrong with a UI/UX that takes a literal year to master.

You can learn basic navigation in about 5 to 10 minutes reading through emac's built in tutorial. Mastering it means finding a configuration that works for you, or writing your own implementation.

I don't use emacs regularly (other than as an info page browser), but I have been using vim for the last 20 years and am still learning new things about it.

djaouen10 hours ago

I guess programming [1] isn’t worth learning, then?

[1] https://norvig.com/21-days.html

adastra2210 hours ago

“UI/UX”

omnicognate9 hours ago

"Mastering" emacs (certainly any version of "mastering" it that takes a whole year) requires learning a programming language, elisp. This is because emacs isn't an editor. It's a language and environment for rapiy developing textual user interfaces (TUIs) and "customising" or "configuring" it is programming. To just learn to operate it as a text editor certainly doesn't take a year, but if that's the approach you're going to take I wouldn't recommend emacs. Use VS Code or a JetBrains IDE or whatever instead.

The linked article isn't very good, BTW. If you're interested in actually mastering emacs, the book "Mastering Emacs" [1], whose author comments here regularly, is the place to start.

[1] https://www.masteringemacs.org/

+1
illiarian8 hours ago
bigpeopleareold9 hours ago

I think a programming language can be viewed as a UI and having a UX: - UI: It's a text based UI that is lazily evaluated (that is, there is always some compilation and/or execution to specifically run for the commands to execute. This UI would fit a certain model of computation, itself being a domain and use-case. - UX: The ergonomics of a programming language, like it's usefulness, accessibility of concepts, its surrounding toolchain, is part of the experience of using this interface to the computer. There is also talk even here on HN about PL features and their utility. That, to me, is a form of user experience.

I say this because I think about a programming language's toolchain as the make-or-break aspect of its utility of a language. Can I interface with it well enough without anxiety or anger? :) But, these "lazily evaluated" tools I think form in an aggregate as a user interface to me.

spindle8 hours ago

I agree. But you should learn Emacs anyway, because mastering such a powerful tool, even if it takes a long time - and even if you don't really need it - is FUN!

adastra227 hours ago

I did and I regret it.

raverbashing8 hours ago

Yeah, do they really think "learn in one year" is a compliment?

Interesting how they claim it's compatible with vim was an advantage, oh well but aren't you trying to get me away from it? Sure it's a "shorter learning curve" (if they somehow get rid of all the emacsism before getting to that mode and learn nobody has a "meta" key in their computer)

I could learn a lot of more fulfilling things than emacs in a year. Guess I'll just stick with vim and vscode

wolpoli9 hours ago

I have read plenty of anecdotes on HN about people choosing the wrong platform. In my opinion, Emacs displays characteristics of a wrong platform to invest time in.

I know that Emacs is a very powerful and completely open-source platform, but I have questions about its long-term viability. It's not commonly introduced in CS programs/bootcamps so it'll lead to a declining market share, and its most powerful capabilities require knowledge of LISP, which is not a popular language.

Time and energy spent learning Emacs is also non-transferable as it has a one-of-a kind shortcut/user interface. The student will be locked in to Emacs.

Students should invest time learning VSCode instead. At least it'll be easy to switch to other products.

gjvc6 hours ago

Do you also give reviews of books you've never read?

What was the last version of Emacs you've used?

This is one of the most FUD-like posts I've read on this site in a long time.

Koshkin28 minutes ago

> questions about its long-term viability

I guess people have been having them for the last 47 years now.

shakow1 hour ago

> It's not commonly introduced in CS programs/bootcamps so it'll lead to a declining market share

Bootcamp a few years ago would have made me an expert in coding in Ruby/RoR under Atom with Ember.js; man, am I ready for those market shares!

jb19918 hours ago

> it has a one-of-a kind shortcut/user interface

The system-wide OS keyboard shortcuts for basic text editing in macOS are the same as emacs. I discovered this accidentally and people wonder why I can navigate basic stuff on the mac so well and my answer is "I used emacs for many years."

leobg2 hours ago

Which shortcuts? You have a link to a list? I only know Cmd-left/right to skip words. But anything more fancy?

jb19911 hour ago

if you are using left/right arrow keys, that is not emacs. Control with F, B, A, E, K, etc are the ones I'm talking about.

wolpoli8 hours ago

Thanks! I was not aware of that.

mvdwoord6 hours ago

GNU readline is also all over the place and has emacs like keybindings.

https://tiswww.case.edu/php/chet/readline/rltop.html

BeFlatXIII4 hours ago

Why stick to what's popular? A larger ecosystem doesn't mean anything there is actually any better—or at least the better parts aren't guaranteed to be discoverable.

Barrin927 hours ago

the best predictor of something's future lifespan is its past lifespan. Emacs has been around for 50 years, the likelihood that it's going to vanish is much smaller than whatever is new on the scene. You can fill an entire graveyard with bootcamp fads.

And being locked into Emacs isn't really an issue because it does everything. It's like saying you're locked into the dotnet ecosystem. I mean, so what?

And an important thing to note is that you may be locked into Emacs, but with every other tool you're locked out. What is there to learn about something like VSCode? You click on the marketplace and install extensions. Emacs might teach you things that aren't transferable (which I'd also question), but at least it's teaching you something.

anthk4 hours ago

Emacs it's bearable with persp-mode. If you set the global keybind to C-c C-w (as it was with some former buffer manager) you'll find yourself using C-c -C-w b more than C-x b, because it will show you the isolated buffer per "pane" a la Screen/Tmux.

You can use the first pane for editing, the second one for eww, another one for programming, one more for M-x calc (and the GNU info help page) and so on. Much better than cluttering your buffer list.

C-c C-w s to create a new pane, and C-c C-w C to destroy it, and C-c C-w ? in order to get help. That's it.

G3rn0ti3 hours ago

I second „persp-mode.el“ to be a great early addition to your default setup. I usually do that to separate front end from backend code or source files from remote terminals and/or error logs.

Wherever I can I use default key bindings which actually helps me with remembering. In this case I stuck to „C-x x“ as a prefix key combo.

I would also suggest to first install „which-key.el“ which will make Emacs display a list of possible key bindings from where from the key combo you just typed. This way hitting „C-x x“ will give you a menu displaying all possible persp-mode actions and will become second nature.

nurbl3 hours ago

I find that with project.el (or projectile) buffer handling per repo works fine without having to separate things into frames. I often have hundreds of buffers open after a while and finding the right one is rarely a problem.

deafpolygon4 hours ago

Waste of time. Better off to master JavaScript and extend VS Code / Codium / et. al.

At least the JS knowledge will carry over to something employable.

G3rn0ti3 hours ago

Well, that‘s a valid opinion and I am not telling anyone what tools to use.

But as a senior I have seen many colleagues moving from one IDE du jour to the next and spending many hours of reconfiguring their tools while I just stuck to using Emacs all these years with a moderate shift of packages. I’ve been programming C, C++, Perl, JavaScript (and its various ECMA incarnations), React components, SQL and even Lua. Nowadays I am doing my terminal sessions from Emacs, too, and enjoy Tramp mode for tracing live bugs. Also, I started writing SQL change sets using org-mode which is really a killer for me now. Emacs is such a versatile programming tool and does not stop amazing me.

VS Code looks so boring in comparison.

Also my colleagues keep on whining about the CPU and memory consumption of their IDE that is quite large for, well, ultimately, text editing.

precompute2 hours ago

Writing functions in elisp is much easier than having to write JS for electron-based editors, and the elisp you write will usually work for a long time without being modified. Emacs is geared towards people that use it regularly, and its defaults hardly ever change.