17
votes
Thinking of getting into emacs, any advice?
Recently I’ve been growing dissatisfied with my current workflow (Obsidian and iA) and looking to try something new, and someone recommended emacs, as long as I was up for the challenge. I figure it can’t hurt to try, and if I don’t implement it, well, I’ll have learned something.
I’m fairly comfortable with CLIs, but will likely use a GUI, and will be using on a Mac.
Anyone have advice for a total novice?
(This comment has a lot of information. If you undertake this journey, it will likely be weeks before you have learned and explored everything here.)
First and foremost, I don't use macOS, but as far as I understand, Emacs Plus, installed via Homebrew, is the most popular method of installing Emacs on a Mac. Emacs 29 is the current stable release. I recommend starting with that.
Emacs is a very old program. It has a lot of idiosyncrasies compared to new software. The keybindings are weird. The out-of-the-box experience is ugly and lacks a lot of, not just niceties, but I would even say necessities. Its workflows for writing, note-taking, and programming are similar to other editors, but nothing about Emacs is ever really normal. It is despite these things, and eventually because of them, that I strongly recommend trying Emacs.
I would say Emacs is the type of software that has an "infinite ceiling". As long as you keep using Emacs, you will always learn new things about the editor, and new ways to use it (email, RSS, literally organizing every aspect of your entire life with Org-mode, etc).
Emacs has a steep learning curve though, especially if you are not already familiar with other very old (and likely "Unixy") software, that have their own age-related weirdness. Learning Emacs isn't just learning a new editor, it's learning a completely different paradigm for interacting with computers, and what software could be and do for us. There's a lot of history behind Emacs, but I'll try to sum it up with the phrase "infinite extensibility". Emacs can do anything, given enough time and Lisp code.
The good news is that if you use macOS, you might already have at least a passing familiarity with some Emacs keybindings. Ever wondered why
Control+a
(C-a
) andControl+e
(C-e
) move your cursor to the beginning or end of a line? You can probably guess what text editor the ancient architects of your operating system used to build it!One more thing, before I start throwing out recommendations: Emacs is almost exclusively customized and extended by writing Emacs Lisp code. If you have no programming experience, that is certainly going to make extending the editor more difficult, but not impossible. Above all, I recommend patience and an attitude for learning and exploration.
For getting started learning Emacs, I recommend:
Mastering Emacs, if you would prefer to read a book. (If you don't want to, or cannot buy the book yet, you can get a copy from Anna's Archive.)
System Crafters on YouTube, if you prefer following along with videos, especially his Emacs From Scratch playlist.
System Crafters would probably be a better place to start if you want to prioritize getting Emacs looking pretty (which is totally valid, because the default style and theme is harsh). It would probably also be an easier place to start if you have no programming experience.
For continuing to learn about Emacs, I recommend:
/r/emacs. Even though most of Reddit is bunk these days, the Emacs subreddit remains a good forum to ask for advice and learn new things.
Protesilaos Stavrou's YouTube channel is filled with tons of videos showing how specific Emacs features work or showing off neat packages that he or others have created.
Micky Petersen's blog has lots of articles for explaining how features and packages work.
Irreal also regularly posts about Emacs packages and features.
/r/planetemacs collects links about Emacs from all around the web.
Sacha Chua's blog is a great place to keep up with news about the editor and discover new things.
As for writing Markdown and novels in Emacs:
Emacs has its own
markdown-mode
built-in that handles syntax highlighting and commands for previewing and editing Markdown. Right out of the box, you can use Emacs to write and interact with Markdown. I usedmarkdown-mode
to write and preview this comment.I am less sure what built-in features or third-party packages exist for organizing and publishing Markdown. I would need to know more about your existing workflow to be able to give recommendations on how you might replicate it with Emacs.
One of the things that sets Emacs apart from other editors is that it tends to favor more powerful and interactive markup languages like Org-mode. If you're going to invest in using Emacs, I believe you would get more mileage out of the editor by switching to using Org-mode instead of Markdown. Org-mode is, among many other things, a markup language similar to Markdown. It is for many people the defining feature of Emacs. There exists quite a few built-in features and third-party packages for organizing and publishing Org-mode documents as blog posts, novels, scientific papers, and just about anything else you can imagine. People have, and regularly do, publish entire novels using Emacs and Org-mode.
This is however, an area of Org-mode that I am less familiar with. My writing in Org-mode is primarily note-taking. I do have an extensive library of notes in Org-mode, including a 100,000+ word worldbuilding project, but I have never gone through the process of setting up a publishing workflow.
Which is to say, I'm confident you can write and organize text into a novel with Org-mode, but when it comes to publishing it, I can only throw links out, in no particular order, and hope they end up being useful:
The closest analogue to managing and organizing text files like Obsidian does, is going to either be Org-roam, or perhaps Denote. There's also Howm, which is apparently a bigger deal in the Japanese Emacs community, but I really don't know much about it. Maybe this would be helpful: Note taking in Emacs with howm
Some final notes:
Just for writing Markdown: Neovim, Kakoune, Helix, or some other modal editor would probably be fine. Vim-likes don't have as extensive tooling for organizing and publishing text into novels as Emacs though. Efforts like Neorg are cool, but ultimately they are imitations of Emacs tools.
If you have a strong interest in modal editing as a concept, check out Evil.
I have never used Doom Emacs, but it might be a faster and easier way of getting started with Emacs, especially just for writing purposes.
Assuming you didn't choose to use Doom or another Emacs framework, I recently found these two blog posts to be excellent recommendations for minimal sets of modern Emacs packages:
My Top Emacs Packages
Avoiding Emacs bankruptcy, with good financial habits
(The packages in these lists will act as replacements for some of the packages originally installed and configured if you followed the Emacs From Scratch playlist.)
My favorite writing feature in Emacs: Imagine you open up your notes and edit the first paragraph of your text. Then, you go on and write another paragraph of text somewhere else. After that though, you realize you want to undo your edits to the first paragraph of text. In other text editors, you would have to linearly undo all of your changes until you got to a point in which the first paragraph was restored. In Emacs, you can highlight/select a region of text, and when you press the undo key, it will only undo changes made in that region of text, regardless of where those changes are located in your undo history.
My favorite themes and color schemes for Emacs are Prot's Ef themes (specifically ef-spring).
If you end up sticking with Emacs and want to convert all of your existing Markdown files to Org-mode, Pandoc should be able to mostly automate that process. If you end up using something like Org-roam on top of Org-mode, the Md-roam package might be another way to integrate your Markdown files.
This is utterly brilliant, thank you so much! I’m bookmarking this and will refer back as I learn. Thank you for taking the time to compile all this information, I’m determined at this point to at least try.
I have more than a passing familiarity with UNIX systems, even though it’s always been with Macs. I’m very excited to see how much of what I’m familiar with translates over, and how much new there is to learn! :)
First off, awesome comment.
I tend to agree, and wanted to add
pandoc -o novel.pdf novel.md
as a recommendation. With pandoc installed and any editor for the Markdown (personally I like Helix), you're pretty much bound to get good to great results with minimal effort.I suggest you don't get into emacs.
Get into vim instead!
something something holy war something
I’m beginning to think I've unintentionally wandered into some sort of battleground…
Both EMACS and Vi(m) are a bit archaic - left over from the days when GUI desktops didn't exist. Many people learn one or the other in school for an I.T. major. Keystrokes become reflexes and nostalgia. So, yes, it is a bit of holy war. :-)
I wouldn't.
I say that as someone who was very into EMACS in college. I was even a member of alt.religion.emacs.
A lifetime later my move(s) the IDE of the shop(s) where I worked helped me interoperate with coworkers and project software a lot.
If I went back in time to do college again I would probably learn VI. Same reason, many more people use it and it wold make it easier to interoperate with them.
You will get more back on your investment by learning a modern tool or technology -- for the most part. SED and AWK will make you into a wizard. :-)
If you must learn a new editor, I would try Code. It has a few annoyances AFAIK, but it is elegant in many ways.
I’m not concerned with interoperability, as this is only for my personal writing workflow, not that for my 9-5. But this is good to know, thanks!
If you mean writing as in essays, articles, stories, etc there are far better pieces of software. Even if you want to be on the CLI and do not care about formatting ( bold, italics, line spacing, etc ).
Any suggestions for what would work then? I’m accustomed to using markdown for formatting.
Not OP but I’ve been using Typora for writing in Markdown. It’s a visual markdown editor but I have like its workflow and features more that writing Markdown in VS Code.
Any CLI text editor will work if you have the markdown memorized and type it manually. Nano is extremely simple and is likely already on your *nix machine. Lesser know, but also simple & CLI is NE. It has DOS style drop down menus.
If you want the editor to do things for you in regards to markdown, then I would look at what extensions exist for markdown for either EMACS or Vim (vi clone ). Pick either editor by how much you think you might like the extension.
If you are really into learning something funky you can put a DOS emulator on your machine and look for a copy of early Word Perfect which ran in the DOS shell.
I’m going to be a contrarian against the other commenters here and say you should give it a try to see if you like it or not. It’s the only way to know for sure.
I use Emacs primarily just for org-mode and all of the niceties it has. I don’t mind that I’m only using 5% of Emacs because org-mode does so much more for me than I could accomplish with other markup formats (e.g., task management, inline code evaluation, folding, table editing, built-in publishing to formats like HTML and PDF).
My main suggestion is to try Emacs with the tutorial shown on its main page, but also quickly consider a framework like Doom Emacs or Spacemacs because they will smooth out a lot of the rough edges that Emacs has. I gave up on Emacs a couple times and then found Doom, which has kept me going since then.
Otherwise, I’d suggest setting up a project in Emacs with one of your writing projects (you could use the
projectile
commands) and then see how it feels to go through the whole writing, editing, publishing process in Emacs. You can explore packages for each step, such astreemacs
for keeping a side bar open with a list of files, grammar tools, formatting tools, etc.You can really make a writing workflow effective in Emacs, Vim, or anything else - it just depends what you prefer. For me, the small things in org-mode keep me in Emacs for most of my writing.
A quick note in platforms - I’m not aware of any macOS GUI apps for Emacs but you can install Emacs and launch the native GUI it has instead of the command line. See Tools | org-mode for a list of most of the available tools.
Thanks, this is very helpful! I’ve been eyeing Doom, and honestly that it refers to itself as “opinionated” is what sent me here to ask if those wiser than me can offer suggestions. (I happen to like “opinionated.”)
It’s very big, is I suppose my hesitation. But knowing that there are others who use it in a smaller sense is helpful.
What are you planning to use it for? Just note taking? If you want a customizable note taking environment, I suggest you try Neovim with Neorg. Or you can even use your existing obsidian vault with obsidian.nvim.
I think Emacs is only worth it if you want something that is extremely custom and integrated with everything else that you do. It's pretty hard to make different things work well together, that's why things like Doom Emacs exist. Neovim would be slightly less configurable, but it's more than enough for most people, and if you just want a note taking app that you can better adapt for your specific workflow, nvim will work well for you.
Neorg is even working on a mobile app and other cool stuff like built-in GTD mode, which would make it even better to use than Emacs Orgmode (although it's already better syntax-wise, since Neorg was specifically designed to avoid some design mistakes that org made)
I write novels! I used to use an app called Ulysses, which was basically the same as Obsidian is now. iA has been feeling too restrictive to my needs (sit down, write) and Obsidian is my default for taking notes.
I’ll check out Neorg, thanks!
Everyone else here is saying try Vim and I'd echo it.
I learned Vim years ago in university and still find it useful when I need to work on Linux shells at work to make my life much easier.
I have a vimrc I made like 10 years ago and stick with it now, it's great!
I think I have a very similar use-case for emacs as you. I started using Emacs to organize my lab notebook in plaintext and continue to use org-mode for writing and notetaking.
I would recommend using doom emacs to get you up and running with a basic configuration. You can configure doom using the init.el file. I would reccomend turning on org, zen, spell, and grammar to begin with. I also use the package denote and a few others to organize my notes.
I installed emacs using homebrew and emacs-plus, which works great on my m1 mac book air.