Learning Emacs project [Part 1]
I will be logging my progress towards learning Emacs and replace Sublime Text as my main text editor. (Sublime is great, and recently it looks like work on it has resumed!)
In the past I’ve tried to learn it but quickly lost the motivation (or just forgot about it) and just kept using Sublime Text. This time I’m doing it for the fun of learning a well tested and respected UNIX tool, the challenge of learning Common Lisp, investing in a tool that will be around X years in the future and as a personal challenge that involves overcoming the initial frustation of not being able to do basic things. Feeling like a noob.
I considered Vim and may learn it in the future, however right know (not knowing any of the two) I’m more inclined to Common Lisp for customization purposes over Vimscript. Also, I’m interested in Org mode and I hope to get into that later.
The main goal is to feel proficient with Emacs to the same level I’m with Sublime and more (Learning how to create plugins for it, which I haven’t done in Sublime either).
This is a vague goal, so I wrote a list of questions/use cases I should be able to do with Emacs. I divided into “Essentials” and “Power features”. Learning all the essentials will put me at the same level of my Sublime Text knowledge.
- Switch between currently opened files
- quickly locate a file under current directory/project
- Manage projects?
- Split panes (or just use tmux? )
- File tree explorer
Select all text
Select current line*
- Select current word*
- Quickly move the cursor to some position, line, word, character*
- Replace n word ocurrences (multiselect and replace)*
- Copy and paste formatted (keeping indentation)*
- Select a “square” portion of thext and copy/paste it*
- Add bookmarks to some line number*
- Quickly switch between bookmarks*
- Clear bookmarks*
- manage snippets*
- Navigate to symbols (classes, functions…)*
- Have multiple “buffers” in clipboard, selective paste*
- Install a plugin*
- Remove a plugin*
- Change plugin bindings*
- Solve key binding conflicts*
- Disable a plugin/enable*
- Run commands*
- Run a command everytime a file is saved*
- Creating a plugin*
- Distribute a plugin*
I hope to document most of this journey in case there’s somebody in a similar position.