Setup Tmux, Vim, and Git

start.sh is a script I created to install and configure my working environment on Ubuntu servers. I work with quite a few virtual machines, and find myself needing to quickly deploy. By making the script available over http easily, I'm able to get started without having to configure ssh keys or other access methods. The snippets below are a sample of what's included in this script. I'm constantly updating it, so be sure to always get the lastest version.

If you'd like to open 'start.sh' in vim on your own machine, use this command :

curl -s http://vicg4rcia.com/files/start.sh | vim -

In addition to it's functionality as an installer, start.sh serves as a documentation of my configurations, and provides a starting point for creating other similar environments when needed. When I need to deploy to a new shell, I just run this command (don't do this if you don't know what you're doing) to download and install the latest version of the script.

curl -s http://vicg4rcia.com/files/start.sh | bash

Tmux is the first component in my toolchain. I use tmux to multitask within a shell environment and to preserve a persistant session. Learning to use tmux has been an interesting journey, starting with the basics then learning new tricks as I needed them, developing my own workflow. I also remap my caps lock keys to ctrl on my laptop and workstation, which makes many of the key combinations that tmux uses more natural to type, especially on a laptop keyboard. Here's a look at some more of my configurations.

In action, this configuration customizes the environment to look something like this.

Next up, vim and my plugins are installed, and we add some configuration in our ~/.vimrc file. These configurations range from setting values for plugin panel sizes to mapping key bindings for plugin functionality. Notice how I create the Vimux command mappings for git to :gs, :gd, and :gl. Using these key combinations in vim will open a the vimux panel and display the output of these commands. Combining the functionality of Vimux to our regular git environment provides a sort of "poor man's" git plugin. Although I haven't shown any here, I also use similar vim key mappings for running unit tests, with the results being displayed in the Vimux pane.

And my development environment in action...

published on 2013-06-20
updated on 2015-09-28