aboutsummaryrefslogtreecommitdiff
path: root/microposts/emacs-switch.org
blob: 8460ce3178f0777d50fb04ec98a47b8d10d22532 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#+title: Emacs is cool

#+date: <2021-12-30>

Emacs blows Vim out of water.

I started using vim in late 2000s, perhaps 2010, as I was drawn by the marketing slogan with vim "what you think is what you get".

I tried to get vi keybinding on everything, in browser (vimperator), pdf viewer (zathura), window manager (i3) etc.  I used vimwiki heavily for knowledge and task management, and even wrote the initial version of the pandoc vimwiki reader.

About 18 months ago (around end of June 2020) I decided to give Emacs a try.  The reason for this decision was more ideological than technical - I was fed up with a free software hostile environment, and Emacs always striked me as a centre piece of the GNU project.

I started the official Emacs distribution with an empty config file, and read the emacs tutorial.  Coming from vim, it was quite uncomfortable to go without the convenient keys from hjkl for basic navigation to C-d for scrolling down half page and . for repeating the last action.

Org mode came as a double culture shock for someone used to vimwiki.  Why would anyone think having a level-8 heading is a good idea?  The link format was also a bit more verbose.  Online resources focused more on GTD workflow than describing the markup syntax.  And the table auto-align was nothing fancy - we have that in vimwiki.

But soon enough, I found out Emacs is indeed way better than vim.  It can be used for almost about every computing task, including web browsing, emails, media player, executing shell commands, reading epub, managing files, version control, and of course, text editing.  Days without emacs now seemed like dark ages.

Some aha moments in my Emacs journey:

- When I discovered icomplete and fido, completion and function / variable discovery became so much easier.
- When I combined icomplete with (setq org-refile-use-outline-path t), (setq org-refile-use-cache t), and (setq org-outline-path-complete-in-steps nil), which allows me to jump to any entry in a huge org file within seconds.
- When I learned about emacsclient, so that I can have a long running emacs server so that I can share states across multiple emacs frames (or "windows" in a DE / WM context), and I don't lose anything when accidentally typing C-x C-c and quitting emacs.
- When I found out EMMS to be the only media player with persistent playlists that I can switch and control with ease, and with the help of mpv, it can play urls in multiple schemes from http to sftp, and with the help you youtube-dl, it can play mediagoblin webpages, which allowed me to go through talks at https://audio-video.gnu.org/video/ and https://media.libreplanet.org/videos without losing track.
- When I read the GTD book, despite not having a secretary to bring me the tickler folder or a koi pond to for me pave around with a wine glass in hand, I could finally put the design of org mode in context and vastly improve my workflow by implementing my version of GTD.
- When I switched from webmail to mu4e, I learned how to get mails as a client and that emails are basically plaintext files (e.g. maildir) which can be read and written to locally and synced to remote server, and that smtp and imap are completely separate areas of concern; when I switched from mu4e to gnus, I learned how to serve mails using dovecot as an imap server and talk to a mail server using telnet, as well as the nice thing about offloading indexing to an external party (updating mails in gnus is instant, compared to mu4e-update-index).

The most useful tool, the killer feature for me, is of course org mode.  I spent most of my emacs screen time in org mode.  I can't think of any aha moments related to it, but the process of adoption was gradual and there are so many nice features.  I approached org mode with starting using one new feature every few weeks:  speed command, org agenda, links, properties, org capture, effort estimate, clocking, tagging, refiling, attachment, online image display, citing...  The problem with marketing org mode, and emacs in general, is that it integrates so much in my life and its workflow is so involved, that it is rather difficult to come up with a quick demo to impress people.

One final point is that my usage is pretty vanilla, in that I strongly prefer the core distribution and GNU ELPA.  I also installed a few packages from NonGNU ELPA, but I don't use MELPA at all, both for ideological reasons and simplicity.  In the rare occasions when I really need a package not in core / NonGNU ELPA, I normally install it manually with make / add-to-list load-path and require / autoload.

Enough rambling...