I am a Neovim (or Nvim in abbreviation) user. In Nvim, we use Ctrl-W as prefix for window-related operations. However, the default prefix is Ctrl-B in Tmux. As a result, I often mistakenly press Ctrl-W when trying to change panes inside Tmux, which is annoying. Why not change tmux prefix to be more vim-like?

Tmux does not create a configuration file under your home by default. You have to create one yourself. First, we need to create a config file named .tmux.conf under home directory:

touch ~/.tmux.conf

Then, we edit this file to customize tmux behaviours.

Change prefix

To change prefix, add the following settings to .tmux.conf,

unbind C-b
set-option -g prefix C-w
bind-key C-w send-prefix

Split panes like Vim

By default, tmux use <prefix> % and <prefix> " to split window vertically and horizontally respectively, which is rather obscure. We can change it to be more Vim-like.

# use <prefix> s for horizontal split
bind s split-window -v
# use <prefix> v for vertical split
bind v split-window -h

Then we can use <prefix> s and <prefix> v to create horizontal and vertical split respectively.

Vim-like pane navigation

In order to use the traditional Vim navigation key HJKL to switch between different panes, use the following settings:

bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

Then we can use <prefix> h/j/k/l to go to pane left/below/above/right.

We can also use Altand arrow keys for pane switching,

bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

Then we can press Alt followed by arrow key to switch panes.

Resize panes

# resize panes more easily
bind < resize-pane -L 10
bind > resize-pane -R 10
bind - resize-pane -D 10
bind + resize-pane -U 10

To resize pane in the horizontal direction, use <prefix> < or <prefix> >. To resize pane in the vertical direction, use <prefix> + or <prefix> -.

How to reload tmux config?

If you are in a tmux session, just press <prefix>, then use command :source ~/.tmux.conf to refresh the Tmux session. If you are outside of a Tmux session, use tmux source ~/.tmux.conf to refresh tmux configurations.

Note: before changing the tmux prefix key, the old prefix still takes effect. If you want to change the prefix inside a tmux session, you need to use the old prefix.