vim + tmux: A Perfect Match

tmux is a terminal multiplexer: it enables a number of terminals to be created, accessed, and controlled from a single screen. tmux may be detached from a screen and continue running in the background, then later reattached.

[tmux manpage][]

When I first heard of tmux I just assumed it was a beefed up version of screen. I had used screen many years ago in order to keep an IRC client logged in even if I was not connected to my shell. At the time I didn’t see much benefit in adding a tool like this to my development environment.

For a long time I heard developers singing the praise of vim and tmux. Hearing about the release of iTerm2 2.0 and it’s integration with tmux sparked my interest in tmux and vim once again. I still don’t know exactly how iTerm2 and tmux integrate, but I’m really happy with my workflow with vim and tmux.

I have been using vim+tmux together for a couple of weeks now and there’s no looking back. If you’re willing to invest a little bit of time to set things up, you’ll quickly make up the time with your streamlined workflow.


brew install tmux
brew install macvim --override-system-vim

Download and install iTerm2 (optional)

Out of the Box

Below are some of the most basic commands for interacting with tmux.

Create a session

The first thing you’ll want to do after installing tmux is create a session.

$ tmux new -s gaslight-blog

Detach session

You can detach from the session at any point by pressing:

Ctrl-b d

Attach session

You can attach to the session from the command line with:

$ tmux attach -t gaslight-blog

Split horizontally

You no longer have to be dependent on your terminal application to create split panes.

Ctrl-b %

Split vertically

Ctrl-b "

Pane Navigation

Keybinding Action
Ctrl-b ↑Up
Ctrl-b ↓Down
Ctrl-b ←Left
Ctrl-b →Right


I ran into numerous issues when starting out with vim, tmux, iterm2, and mac os. My tmux.conf is pretty slim and well documented at the moment and I recommend you check it out.

vim workflow

The main reason that I continue to use tmux is the great integration that can be achieved with vim+tmux. Prior to using tmux I used MacVim, but if you’re going to use vim and tmux together you’ll need to use terminal vim.


Perhaps my favorite feature about using vim and tmux together is vim-tmux-navigator. This plugin allows you to treat vim and tmux as one a unified session, with the ability to seamlessly navigate between vim splits and tmux panes.

</thead> </tr> </table> This assumes you're already navigating your vim splits like a sane person using these bindings by adding this setting to your .vimrc: ``` nnoremap j nnoremap k nnoremap h nnoremap l ``` ### rspec.vim + tslime.vim One thing that I missed when I was transitioning from emacs to vim was rspec-mode. I quickly discovered [rspec.vim]( which allows you to run specs from within your editor. I didn't spend too much time working with rspec.vim before I was frustrated by the default behavior which blocks the entire vim process. This is no fault of rspec.vim, rather it is more of an issue with vim. Thankfully rspec.vim has a lot of flexibility for generating custom commands and you can easily integrate with [Dispatch]( or [tslime.vim]( I am currently using tslime.vim using the instructions [here]( and it seems to be working well. ### vim-like copy and paste I am still learning the ins and outs of copy and paste while using vim and tmux together. If you're willing to give up using the mouse for selection [this article]( provides instructions on getting copy and paste setup very similar to vim. ### colors When I first started vim inside of tmux the colors were not correct. After searching I found that I needed to add this to my tmux.conf: ``` set -g default-terminal "screen-256color" ``` I also had to make sure that iTerm2 was reporting the terminal type as `xterm-256color`. ## References This article was made possible with the help of many other articles: []( []( []( []( []( []( []( []( [tmux manpage]:
Keybinding Action

Related Posts

Want to learn about the types of products we build?

Check out our projects

Like what you're seeing? Let's keep in touch.

Subscribe to Our Newsletter