For the few readers of my blog, you know I’ve always been a vim user and enthusiast. I’ve settled with vim a very long time ago (±15 years?) and never found a better alternative even though I tried a lot of different things. The versatility, configurability and power of such a tool is really great, while staying blazing fast and reactive. Cherry on top, it is very often available on any server (at least its minimal basic version) and is part of the 3 software I installed on any machine (with git and tmux). When I started using vim, the vim/emacs debates were very heated and you had to choose one or the other. I tried emacs back then but couldn’t figure out how to correctly use it. The keybinds were a nightmare to execute or even remember… Maybe I didn’t give it a fare shot back then but it didn’t seem worth it compared to the joy of using and learning the power of vim. I dont’ consider myself a “black belt” in vim, but I know my way around well and I really love my config that suits me perfectly.
Having said that, I’ve be “drowned” to try emacs for the past 2/3 years, not for emacs itself, but because of orgmode1. Emacs as just an alternative to vim didn’t (and still doesn’t) interest me, and the argument of being able to do so much from emacs instead of “multiple” tools is for me more of a drawback than a benefit for me. I’m perfectly happy to use (neo)mutt for reading emails for example and not doing it in the same editor as where I code or write. But orgmode is a beast on its own…
I know there are some way to use org mode via (neo)vim but I wanted to try the “official” thing for org-mode. And one thing that you can say about using org-mode with emacs is that it really feels like a unified experience. Not like when I was using vimwiki + taskwarrior together… Even though there were plugin to integrate them, it was clear that it wasn’t seamless at all…
So I took a deep breath and dived in!
What is org mode?
For those that are not familiar with org mode, from their website:
A GNU Emacs major mode for keeping notes, authoring documents, computational notebooks, literate programming, maintaining to-do lists, planning projects, and more — in a fast and effective plain text system.
And their shorter catch phrase (which can be true depending on your usage of orgmode^^):
Your life in plain text
Basically, for me, it’s a powerful yet flexible way of managing meeting notes, ideas, todos, writing (gemlog, blog or simple thoughts) or even managing my own little “knowledge base”. All this both for work and personal life. I’ll write more on another post how I actually use org mode for my own needs but basically you manage everything you need in plain text files following a simple markup2. It is similar philosophy but yet very different format than markdown (and more standardised if you start looking at all markdown variant).
What makes it so great that a vim user might want to switch to emacs?
I guess the answer to this question might be very different for each individuals, but this is my take on it with my favorite things about org-mode (in no particular order):
- Managing TODO in any files or any (sub)tree the orgmode directory. Makes it so easy to create TODO where you are while taking notes. I’ll show my templates in a future post but it stay very flexible and still have good reviews of your todos thanks to the agenda and search.
- Having quick capture based on template available everywhere. It means that simply by pressing “F6” in my case, I’ll have a dialog buffer where I can quickly select which type of notes I’m taking (personal or work related, todo vs meeting notes, etc…), and based on that, the right template will be used and the info will be saved at the right place in the right file! Very cool!
- The way (sub)tree can be managed and move around, either via keybinds or via function like Archive or Refile that give a great flexibility and shortcut to manipulates your different notes in your different org files and reorganized things when needed.
- The org mode syntax is really enjoyable and extensive for what it needs to do. It is richer than gemtext or even markdown while not being bloated too much (for my taste at least).
- Powerful search engine to list the TODOs to manage based on many criteria like tags.
- Agenda views to quickly see in calendar mode what needs to be done when (deadline and/or scheduled).
- Based on text files, makes it very portable and easily synchronizable between devices. For that I’m using syncthing3.
Learning orgmode, not emacs
My goal was (and still is!) to learn org mode and not really emacs (at least for now). I quickly understood years ago the power that emacs could have by being more a elisp engine than a great editor (troll? not really…). And I also quickly understood by reading a few document pages and blog posts that the learning curve for just emacs basics and setting up a good starting point would be hard… And I didn’t want to do it… Yes of course if I become a daily emacs users for writing and coding then it would make sens… But not just to discover what org mode is really about; which was the number one goal.
How to speed up the curve to focus on orgmode? I decided to use one of the many “distribution” (they called themselves a “configuration framework”?) of emacs. And one that were targeting old vim users too. Having many of my usual keybinds would definitely help! I decided to go with doomemacs4 that seems to be focus on speed (more on this later -_-"). I must say I was quickly impressed by a feeling of “everything works well together and makes sense”… Quickly is maybe strong as I had to wait some time for everything to install :D. But once done, and a few long seconds to load it later, I found a lot of keybinds I was used to, and a lot of cool things I could do after pressing the leader key as a nice prompt with actions and help was quickly available.
For example, when pressing <leader> and m (for org mode related action):
But the excitement quickly became frustration because of all the things that I needed to learn / understand at the same time! I usually like to focus on specific topic and only move to the other stuff around one I’m good with the basic. Wanted to learn orgmode made me learn a bit about emacs usage too, and that wasn’t easy, even with doom emacs helping a lot!
My 6 month experience
Disclaimer: I’m talking about MY experience with specifically doom emacs. Please don’t take this the wrong way or as a troll, it is just my experience that should be different from yours :).
Is it as hard as the legends say?
Truth be told… I’ve never deployed so much effort to learn a tools like this… A tool supposed to help me be more efficient! I tried to be as objective and neutral as possible to avoid having my liking of vim being a barrier to learning orgmode through emacs. I think I did a good job, on that front and that’s a lot thanks to doom emacs default configuration feeling almost home for a vim user. At least while you are editing a few files.
As I said above, I truly believed org mode was a great solution for me so I pushed until I was familiar enough to take notes, have nice shortcut and automation, useful templates and find my way navigating through the different org mode files I created. More on my workflow in another post :).
Nothing is perfect, and emacs is not an exception, unfortunately… So as with every software you use, you’ll have to weight the pros and cons… Most of my “pros” are the in the “what makes orgmode so great " paragraph, so no need to repeat them. One that I will add is that doom emacs configuration made it very easy for me to try developing with it. Opening one file in the directory made it appear as a project in doom emacs, and everything was setup correctly to work with the different languages I enabled. Just for the sake of testing, the v1.0.0 of GTL5 was developed in emacs and I didn’t feel lost at all, transition was smooth!
Here are a few of my “painpoints” with emacs right now.
- Slow and heavy: takes a long time to start and can be resource intensive based on what you are doing. I’ve also installed it on a “distraction free machine” based on a raspberrypi 3 (more on this later too) and it freakishly slow… Even after removing a lot of the modules I use on my laptop, I can still type a lot faster than emacs is refreshing the editor and that really feels like being back 15 years ago… On my laptop it’s fine, but that’s also because my laptop is powerful. I’m disappointed of its slowliness on a pi3 compared to a fully configured vim that is still very fast and snappy :). But even on my laptop it can be slow, specifically when editing a big large file like the one where all my blog and gemlog posts are now… Opening this file in vim is no problem (even with my own “heavy” config), while emacs can struggle from time to time. I had to remove the line numbers for this file and I might disable the spell checker as well (that doesn’t do a good job anyway).
- Emacs + orgmode at once is a real challenge. Starting from a distribution was a must for me and a good choice. It also means that I still need to learn emacs for real if I want to gain productivity with it. I’m sure there are many things I could improve in my current workflows.
- Lots of the cool things on emacs work a lot better when emacs runs as an X application than as a terminal application (it can fallback to it). Tried it but for a complex config like with doom emacs, my tty went a bit crazy. Which makes it not good option on system without X (eg a server).
- Did I mentioned I find it slow too?
Org mode was enough for me to try the other side and while it was a bit of a challenge, I’m happy I’ve done it. I’ll write later about my note taking habits and how I use orgmode to store various bits of knowledge… And also how I have moved my blog and gemlog to using my orgmode too. I think I’m also getting more consistent at taking better notes as well because I invested so much effort learning this tool, so my brain want me to use this small “skills” and force me to continue using emacs and orgmode, and thus improve my usage of these tools.
Is that the end of vim for me? Of course not! I’m still installing vim everywhere and vim is still my default editor in my .zshrc and my first choice when opening files. Now when it comes to editing org-mode file, then emacs is my go to… And then when it comes to coding, well… Depending on the project I might use one or the other, because I’m still comparing the two in this area. But emacs, while heavy, is an interesting piece of software. If I’m being honest, I wouldn’t continue using it if org mode wasn’t so nice (for me at least) and helping with a lot of personal goals… With my small “knowledge” of emacs now, I would 100% go back to only vim if it weren’t for org-mode. But because/thanks to orgmode, I’m ending up using it a lot more than I thought I would…
But we’ll see where I’m at in 6 months :).
If you have any (constructive) criticism or help you want to share about my experience, please feel free to reach :].