Spacemacs
What is it
Long ago in a galaxy far…actually, just long ago… people used to (and still do) compare Vim and Emacs for which is the best. Spacemacs says: Why not have both?
An framework on top of Emacs that allows you to choose between different methods or styles of using the keyboard that are either Vim, Emacs, or a hybrid of
both. By using a file named .spacemacs
and the project cloned out to ~/.emacs.d
you can launch Emacs and move into a code editor house that:
- is updated by git
- large community backing
- totally free
- has many plugins + Melpa repository
- extensible by writing Lisp
Why I use it
- Mega nerd status
- All keyboard driven
- Fast
Okay, I will say the first reason is pretty much not a reason at all. But there are a long list of reasons I do like Spacemacs:
Pros
- Magit is amazing for making commits and very fast to make Git changes
- iEdit is the most powerful multi-editor I have seen so far
- Keeping my hands on the keyboard and off the mouse
- SPC jj - Jump to any character(s) that is on the screen
- Amazing at updating MarkDown tables
- Almost same experience in non-gui mode over ssh
- Most Vim commands can be used
- iBuffer is from another world of amazing features like nothing else
- Tons of language support from the Emacs world
Cons
- Renaming a file is not easy
- Most of the shells are horrible. Only
vterm
is worth using - Not everyones cup of tea
- Hard to be consistant with cancel commands. Is it
Esc
orCtrl-g
? - Save and load of workspace not reliable
How I learned
Honestly, every time I would try Spacemacs, I would give up quickly and go back to Sublime because I knew how to do the translation of the content much easier. But there comes a time with me that I want to risk the amount of time it would take me to learn the new thing(s) so that I can grow and understand how to do something else.
Each new feature for learning on Spacemacs kept growing after I got a couple of the basics down so that I never went back to Sublime or a different editor. As I repteated this pattern I started to get better.
Limit the time to learn a new medium/advanced feature to a very short amount of time. I used 10 minutes maximum.
The definition for medium or advanced is based on the current level of where you are at with the feature. I like to use a scale of 0 to 4:
Level | Description |
---|---|
0 | Never heard of this. I must google it. |
1 | I am familiure but need to read and use google almost all the time to get things done |
2 | Use google much less than level 1, but still use it to remind me of how to do things |
3 | Almost never use google at all |
4 | I feel comfortable teaching what I have learned to others |
I also use the evil
setting which represents the words: Emacs VI Layer
This allows for me to use almost all of the Vim based characters/commands/modes associated with Vim
Things not in Evil
There are some things that are not included in the evil
mode which are of the following. There are way more than what I have listed
here, but this is what I recall getting me by:
Command | Description |
---|---|
Ctrl - g | Cancels most actions or menus |
Ctrl - v OR b | Moves up or down content |
Unique to Spacemacs
Here is a list of features that I appreciate so much inside Spacemacs:
Command | Description |
---|---|
MarkDown Tables | Ability to edit tables really easy inside markdown. Things just auto align. |
iEdit | I have only skimmed the surface of this one, but you can edit multiple things in the whole file or just within a function |
iBuffer | Manage the files you have open with tons of searching or selecting (eg save all files of a project, close all *.json files) |
Windows State | Move/Select/Shrink/Grow/Rotate all windows with only the keyboard and then hit q when you are done |
SPC j j | This turns everything grey and waits for any string of chars, then lets you jump to the patern displayed on the screen |
magit | (From Melpa) lets you commit to Git really really fast |
SPC - [0-9] | Select a window from 0 to 9 making navigation really fast |
VTerm | (not really unique) Show a really advanced shell for Emacs to issue shell commands but also switch to view mode for selecting text allowing to select text for documenting |
More detail…
This is just a summary of what I enjoy about Spacemacs. To see a full article about it all, head on over to my code page about Spacemacs