I hope my question makes sense.
I am using Doom Emacs for a while now and have become fairly proficient. But I feel like whenever I am browsing emacs content online there are still many topics for me to discover. So I was wondering if there is anything that I might be “missing” yet which might help with my productivity or improve my development skills.
Sofar I what have learned, on top from my head:
- Org/Org Agenda (refile etc.)
- Magit
- Vterm
- LSP Commands
- Multiple Cursors
- Literal Config
- Navigating Emacs itself (which key, debugging, reading Emacs-Lisp (abit))
- Using Language specific commands, i.e. send buffer to repl
- Using Undo with Vundo
Only thing I know that I still need to learn is beeing more proficient with vim keybindings, but with that I know where to start.
I know the question is quite broad, but maybe there some “killer features” worth to explore which I am not aware of yet.
I’d appreciate any input.
Just use it. It is that simple.
I also suggest being patient and looking up the documentation and the built-in help whenever you have a problem.
Don’t fall into some of the common pitfalls I see people here do often:
Don’t insist on super customized Emacs according to your liking from the early beginning. Be patient, and do stuff Emacs way, or live with some more irritated moments, and leave minutiae customization for later, when you are more familiar with Emacs. Emas is to be customized by each and every one and bent to your needs and personality, but it may take some deeper knowledge of Emacs in some areas, so to save yourself some frustration and lots of time, proceed gently at customizing Emacs in the beginning. This will probably be a somewhat controversial tip for some people, but what I mean is, prefer to do the work you have to be done, over how you do it in Emacs. In the beginning, bend yourself around Emacs, and keep in mind, that the more you are used to Emacs, it will be easier and faster to bend Emacs around you.
Yes, there are many tips and stuff accumulated on the Internet, but you can not learn everything at once. With the amount of information available, it is probably better to concentrate on using Emacs to do your work, and focus on exploring only those topics that give you the most in terms of how you perform your work; for example to solve some very irritating thing or to automate something, etc. You don’t have to start using Emacs for everything immediately, let it come with the time as you are getting more and more used to Emacs. What might be a killer feature for someone, might not be a killer feature for yourself.
Being popular does not always mean very good. Popularity goes in waves. You can spend all your time just re-learning “popular” frameworks and things. Instead of focusing on which package you should use for this or that; choose one and just use it. Once you find some true shortcoming that irritates you, than look for another package or for tips on how to change it, etc. If you are using Doom, I am quite sure they have already included something that is good for most people. I personally just use whatever is default in Emacs and have had no issues with it; for like 25 years now, or something there and counting.
I think this is really great advice.
Try to identify the biggest inefficiencies/annoyances that you encounter in your real daily work, and use those things as motivation for learning about a specific part of Emacs. Every time you fix some small problem with your workflow, you will become a little more knowledgeable and efficient, and over time you will become a master.
As a simple example, a beginner Emacs user might notice that they’re spending a lot of time navigating to the same files/directories over and over with M-x
find-file
. And that might motivate them to learn about packages for opening recently visited files (e.g.recentf
), or to learn about Emacs’ bookmark system. That’s a really basic example, but I think that repeating that general “improvement loop” over and over is how people become good at Emacs.I want to note here that there is a eternal temptation towards “yak shaving” with Emacs, where you spend all your time working on your configuration instead of getting your actual work done, whether that be school assignments or tasks for your employer. Personally, I have a rather extreme rule that I don’t make any adjustments to my Emacs config during working hours, unless I can make the change in less than 5 minutes. Instead, I keep a TODO list of possible improvements and do those on my own time.
Finally, I second the advice given elsewhere in this thread, about starting with a vanilla Emacs config. Emacs distros like Doom/Spacemacs/Prelude are great for showing you what’s possible, but you will understand your config so much better if you build it up from scratch. That will also help with gradually learning how to program in Elisp, which is a total game changer and probably the single most valuable thing you can learn.
While minimal/vanilla Emacs configs aren’t as flashy Doom/Spacemacs/Prelude, they can be really effective. For example, Twitch coder @tsoding uses a very vanilla Emacs config, but he does things at a dizzying speed. For example, see the following video where he is doing some coding experiments with the “tree sitter” library: https://youtu.be/-8p-Jd9n-_I?t=549