Ever since I was introduced to vim nearly a decade ago when I got my first experience with Linux it has been an editor that I have kept coming back to.
I think it is the minimalist yet powerful features of vim that appeals to me. There is so much to learn about it that you can spend years working with it and still be surprised by things that you didn’t know before.
The killer feature for vim is really it’s ubiquity and ability to use it through ssh sessions. Something that bigger IDEs just can’t do.
From time to time the pastures do look greener however and I stray to intelli-J or sublime text, or textmate. But eventually I get the urge to optimize my coding around the keyboard and I come back to the terminal and vim.
This past week I have been taking time every morning to learn and configure my terminal to be optimal for developing. This time I’ve got a couple new tricks.
My goals have been:
- Scriptable environments that will work for Go, Rails, and Python web development – open editor, start server, launch services, tail logs – all in one step.
- Optimize my vim config to handle those languages
- Have these settings easily transferrable to my computers
- Learn a couple new tricks along the way
For #1, my solution has been tmux and the ruby gem tmuxinator. Tmux provides a way to partition a terminal window with additional windows and panes. tmuxinator makes it easier to configure tmux sessions so that environments can be started quickly and easily. Tmux, for advanced usage even allows multiple people to connect to the same session and peer program.
Optimizing Vim is a lot of trial and error. Thanks to github and people sharing their config files openly it’s easy to get introduced to the settings people all around the world use. It can be fun to read through other programmers settings, try them out and see how they work for you.
Since all these settings are through simple text files they work well being managed through a git repository. You can find my config files on github.com
Reading through other people’s config files has been interesting. It introduced me to tmuxinator, the silver searcher, fixed mouse support for me, finally got a NerdTree config that works, and gave me enough playing around time to memorize and tweak shortcuts.