About a year ago I switched from Vim to Emacs, and I couldn't be happier about the move. I spent some time getting a setup I was happy with, and thought I'd share it for those who are also looking to move to Emacs.
For more information, my entire
.emacs.d is available in my
dots repository on GitHub.
Install Pallet, a wrapper for Cask used to manage your Emacs
Copy my Cask file into your
~/.emacs.d/Cask, and run
install. This will pull down all the listed packages into the
directory and let you immediately get started.
In terms of structuring and managing an ever-expanding set of customizations, I've found the following layout seems to work well.
~/.emacs.d/init.el, use the following:
This instructs Emacs to initialize packages with Cask/Pallet, and then
loads all the customizations in the order you specify in your
Entries in the
~/.emacs.d/customizations are of the form
02-global.el. This guarantees initialization ordering (which
can be useful), and allows you to separate settings naturally (one
file for each language, etc.)
I'll quickly mention a few generic customizations I've added, but see the full .emacs.d for a more complete set of changes (including various customizations for Haskell, Go, Python, Julia, R, LaTeX, Scala, JS, etc).
Some Useful Shortcuts
This is just a laundry-list of shortcuts I've found useful at various times. They rely on various packages and custom functions - see the full repository for details.
This makes it cleaner to switch into Magit - simply pressing
puts Magit into fullscreen mode, where you can
cleanup/stage/commit/amend/push with only a few presses, and then
q takes you back to the window state you had before
entering Magit. It's really a pleasure to use.
GitHub Gist utilities
This makes it easy to take a buffer or region in Emacs and view it in various external services - currently mkdown.com for pretty Markdown viewing and iPython NBViewer for iPython notebooks. These are the kind of small, useful functions that can be easily written with elisp (as opposed to the pain of trying to use vimscript for anything non-trivial).
Sources of Inspiration
A few resources I used over the past year: