It has been almost one year since I’ve started using Emacs. I think this is a good moment to give you some tips about starting using it. This isn’t typical tutorial, but rather the description of my approach to learning Emacs.
Before I even download the binary files of Emacs, I read quite a lot about it. In many guides I’ve read that instead of installing “plain” Emacs, I should try a preconfigured version of it. On Github you can find many Emacs distributions (or rather configurations) like:
Because I read lots of good opinions about
Prelude, I’ve decided to use it.
Without any delays I’ve installed Emacs, pulled all code from
Prelude repository into
.emacs.d folder and I’ve started my journey. Telling the truth, this wasn’t a very long one. After starting Emacs, I did a basic tutorial (this is suggested by almost everybody and I also encourage you to do it - you can press
C-h t to show it) and I was lost. There was no menu or toolbar that could help me. There was some active minor modes that I didn’t understand. My inner curiosity forces me also to look into
.emacs.d directory. I wanted to understand the code that was there. For me, a Lisp beginner, this wasn’t an easy task - I couldn’t manage so much code. The result was, that after one day I’ve gave up and deleted Emacs from my hard drive.
(Please, don’t get me wrong I think that
Prelude and other configs are great. They provide a superior, fully customized, experience when working with Emacs. Also their code base is well written and structured. Simply this wasn’t the right time for me to use them. If you are completely beginner then maybe it won’t be good for you too. But if you know Emacs a bit at least then you should definitely look at those distros. Right now I often read their code, to get some inspiration and learn new stuff)
Start it plain
Let it change
We as programmers love to code. This can be used to master Emacs skills. Emacs uses Lisp as a language for its extensibility and customization, so you can write “real” code to change it to your needs. I encourage you to experiment with the configs files. This will give you better understanding of Emacs and therefore better productivity. I also challenge you to change all Emacs config code in itself - this way you also level up your editing skills.
Let’s write some Lisp code
In Emacs all the configuration is done in init.el file (there are also other options, but I skip them for simplicity). The whole configuration is done through Emacs lisp code. When Emacs starts it evaluates the code in its config files. This code can change the look and feel of the editor (GUI) or define additional commands and functions.
The more advance Emacs configuration is usually splitted into many config files, that deals with different elements of Emacs (i.e. every file customizes different modes). When I started customizing Emacs, I wrote all my code in
init.el file. I didn’t even try to write it in some meaning order. My main goal was to see what I can change and how:
- how can I change the font or the color theme?
- how can I use fuzzy search in buffer switching?
- and many more…
To answer those question I’ve read lots of articles on emacswiki, I’ve looked at mentioned Emacs distributions code and of course I googled a lot. Before I’ve used any function, I’ve read its description. If I’ve copied some code snipped, I’ve spent time to understand it. I extend and extend my
init.el file for a long time - to a moment when I was quite happy with the results. This gave me better confidence in working with and customizing Emacs.
Of course, as almost every programmer I felt bad about my messy code in
init.el file. After some time I’ve started introducing changes and splitting my confing into smaller, more readable and manageable files. My current configuration is heavily inspired by
Prelude Emacs code - Bozhidar Batsov is great and very inspiring developer. You should definitely look at his work.
At present I don’t modify Emacs so much - I do it when something irritating me during my work.
If you still aren’t convenient to use Emacs, I need to say that every time I use Emacs I feel joy - this is so great text editor! I hope that you will find this joy too!