/tmux-sensible

basic tmux settings everyone can agree on

Primary LanguageShellMIT LicenseMIT

Tmux sensible

A set of tmux options that should be acceptable for everyone.

Inspired by vim-sensible.

Core principles

  • core tmux-sensible options should be acceptable to every tmux user!
    If any option bothers you, please open an issue and it will probably be updated (or removed).
  • if you think a new option should be added, feel free to open a pull request.
  • no overriding of user defined settings.
    Your existing .tmux.conf settings are respected and they won't be changed. That way you can use tmux-sensible if you have a few specific options.

Almost sensible principles

  • widely used settings that do not make it into the 'core'
  • explicitly enabled with set -g @almost-sensible 'on'

Goals

  • group standard tmux community options in one place
  • remove clutter from your .tmux.conf
  • educate new tmux users about basic options

Core options

# utf8 is on
set -g utf8 on
set -g status-utf8 on

# address vim mode switching delay (http://superuser.com/a/252717/65504)
set -s escape-time 0

# increase scrollback buffer size
set -g history-limit 50000

# tmux messages are displayed for 4 seconds
set -g display-time 4000

# refresh 'status-left' and 'status-right' more often
set -g status-interval 5

# set only on OS X where it's required
set -g default-command "reattach-to-user-namespace -l $SHELL"

# upgrade $TERM
set -g default-terminal "screen-256color"

# emacs key bindings in tmux command prompt (prefix + :) are better than
# vi keys, even for vim users
set -g status-keys emacs

Core key bindings

# easier and faster switching between next/prev window
bind C-p previous-window
bind C-n next-window

Above bindings enhance the default prefix + p and prefix + n bindings by allowing you to hold Ctrl and repeat a + p/a + n (if your prefix is C-a), which is a lot quicker.

# source .tmux.conf as suggested in `man tmux`
bind R source-file '~/.tmux.conf'

"Adaptable" key bindings that build upon your prefix value:

# if prefix is 'C-a'
bind C-a send-prefix
bind a last-window

If prefix is C-b, above keys will be C-b and b.
If prefix is C-z, above keys will be C-z and z... you get the idea.

Mode sensible options

Choose used mode keys by putting set -g @mode-sensible 'vi' or set -g @mode-sensible 'emacs' in .tmux.conf.

  • vi mode sensible
set -g mode-keys vi
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-edit Up history-up
bind-key -t vi-edit Down history-down
bind-key Escape copy-mode
  • emacs mode sensible
set -g mode-keys emacs

Almost sensible options

Activate these by putting set -g @almost-sensible 'on' in .tmux.conf.

# C-a should be the Tmux default prefix, really
set -g prefix C-a

# enable mouse features for terminals that support it
set -g mouse-resize-pane on
set -g mouse-select-pane on
set -g mouse-select-window on

Installation with Tmux Plugin Manager (recommended)

Add plugin to the list of TPM plugins in .tmux.conf:

set -g @tpm_plugins "             \
  tmux-plugins/tpm                \
  tmux-plugins/tmux-sensible      \
"

Hit prefix + I to fetch the plugin and source it. That's it!

You might also want to restart your tmux server, just in case.

Manual Installation

Clone the repo:

$ git clone https://github.com/tmux-plugins/tmux-sensible ~/clone/path

Add this line to the bottom of .tmux.conf:

run-shell ~/clone/path/sensible.tmux

Reload TMUX environment:

# type this in terminal
$ tmux source-file ~/.tmux.conf

You might also want to restart your tmux server, just in case.

Other goodies

You might also find these useful:

  • copycat improve tmux search and reduce mouse usage
  • pain control useful standard bindings for controlling panes

License

MIT