Skip to content

Instantly share code, notes, and snippets.

@abcarroll
Created December 25, 2015 08:36
Show Gist options
  • Save abcarroll/895847c9beabf6bc594a to your computer and use it in GitHub Desktop.
Save abcarroll/895847c9beabf6bc594a to your computer and use it in GitHub Desktop.
# ~/.tmux.conf
###########################################################################
# Change prefix from default (C-b) to C-g
# C-g doesn't interfere with emacs-style editing keys
#unbind -n C-b
#unbind -n C-a
#set -g prefix C-a
# C-g C-g to passthrough a C-g
#unbind C-g
#bind C-g send-key C-g
###########################################################################
# General options
# Default termtype. If the rcfile sets $TERM, that overrides this value.
set -g default-terminal screen-256color
# Ring the bell if any background window rang a bell
set -g bell-action any
# Watch for activity in background windows
setw -g monitor-activity on
# scrollback size
set -g history-limit 10000
# set first window to index 1 (not 0) to map more to the keyboard layout
set -g base-index 1
setw -g pane-base-index 1
# pass through xterm keys
set -g xterm-keys on
###########################################################################
# General keymap
# Keep your finger on ctrl, or don't, same result
bind-key C-d detach-client
bind-key C-p paste-buffer
# Redraw the client (if interrupted by wall, etc)
bind R refresh-client
# reload tmux config
unbind r
bind r \
source-file ~/.tmux.conf \;\
display 'Reloaded tmux config.'
# Use emacs keybindings for tmux commandline input.
# (Note: if in vi mode, to get command mode you need to hit ESC twice.)
set -g status-keys emacs
# Use vi keybindings in copy and choice modes
setw -g mode-keys vi
###########################################################################
# Window management / navigation
# move between windows
bind-key C-h previous-window
bind-key C-l next-window
# C-\ (no prefix) to skip to last window we were in before this one
bind -n "C-\\" last-window
# C-Space (no prefix) to tab to next window
bind -n C-Space next-window
###########################################################################
# Pane management / navigation
# Horizontal splits with s or C-s
unbind s
unbind C-s
bind-key s split-window
bind-key C-s split-window
# Vertical split with v or C-v
unbind v
unbind C-v
bind-key v split-window -h
bind-key C-v split-window -h
# navigation with C-{h,j,k,l} -- NO PREFIX
# https://gist.github.com/mislav/5189704
bind -n C-k run-shell 'tmux-vim-select-pane -U'
bind -n C-j run-shell 'tmux-vim-select-pane -D'
bind -n C-h run-shell 'tmux-vim-select-pane -L'
bind -n C-l run-shell 'tmux-vim-select-pane -R'
# C-g C-k to passthrough a C-k
# C-k is consumed for pane navigation but we want it for kill-to-eol
unbind C-k
bind C-k send-key C-k
# Pane resize in all four directions using vi bindings.
# Can use these raw but I map them to Cmd-Opt-<h,j,k,l> in iTerm2.
# http://tangledhelix.com/blog/2012/04/28/iterm2-keymaps-for-tmux/
# Note on a few prefix options: C-a = 0x01, C-b = 0x02, C-g = 0x06
bind-key J resize-pane -D
bind-key K resize-pane -U
bind-key H resize-pane -L
bind-key L resize-pane -R
# easily toggle synchronization (mnemonic: e is for echo)
# sends input to all panes in a given window.
bind e setw synchronize-panes on
bind E setw synchronize-panes off
###########################################################################
# Scrollback / pastebuffer
# Vim-style copy/paste
unbind [
bind y copy-mode
unbind p
bind p paste-buffer
bind -t vi-copy v begin-selection
bind -t vi-copy y copy-selection
bind -t vi-copy Escape cancel
###########################################################################
# Mouse mode
set -g mode-mouse on
set -g mouse-resize-pane on
set -g mouse-select-pane on
set -g mouse-select-window on
# Toggle mouse on
bind m \
set -g mode-mouse on \;\
set -g mouse-resize-pane on \;\
set -g mouse-select-pane on \;\
set -g mouse-select-window on \;\
display 'Mouse: ON'
# Toggle mouse off
bind M \
set -g mode-mouse off \;\
set -g mouse-resize-pane off \;\
set -g mouse-select-pane off \;\
set -g mouse-select-window off \;\
display 'Mouse: OFF'
###########################################################################
# Color scheme (Solarized light)
### default statusbar colors
##set-option -g status-bg colour231 #base2
##set-option -g status-fg colour130 #yellow
##set-option -g status-attr default
##
### default window title colors
##set-window-option -g window-status-fg colour180 #base00
##set-window-option -g window-status-bg default
##
### active window title colors
##set-window-option -g window-status-current-fg colour196 #orange
##set-window-option -g window-status-current-bg default
##
### pane border
##set-option -g pane-active-border-fg black
##set-option -g pane-active-border-bg white
##set-option -g pane-border-fg brightcyan
##set-option -g pane-border-bg default
##
### message text
##set-option -g message-bg colour231 #base2
##set-option -g message-fg colour196 #orange
##
### pane number display
##set-option -g display-panes-active-colour colour20 #blue
##set-option -g display-panes-colour colour196 #orange
##
### clock
##set-window-option -g clock-mode-colour colour40 #green
###########################################################################
# Color scheme (Solarized Dark)
### default statusbar colors
##set-option -g status-bg brightgreen
##set-option -g status-fg white
##set-option -g status-attr default
##
### default window title colors
##set-window-option -g window-status-fg brightcyan
##set-window-option -g window-status-bg default
###set-window-option -g window-status-attr dim
##
### active window title colors
##set-window-option -g window-status-current-fg white
##set-window-option -g window-status-current-bg blue
###set-window-option -g window-status-current-attr bright
##
### pane border
##set-option -g pane-border-fg brightgreen
##set-option -g pane-active-border-fg red
##
### message text
##set-option -g message-bg black
##set-option -g message-fg red
##
### pane number display
##set-option -g display-panes-active-colour red
##set-option -g display-panes-colour white
##
### clock
##set-window-option -g clock-mode-colour cyan
###########################################################################
# Color scheme (Tango Dark)
## default statusbar colors
#set-option -g status-bg blue
#set-option -g status-fg white
#
## active window title colors
#set-window-option -g window-status-current-fg yellow
#set-window-option -g window-status-current-bg black
#
## pane border
#set-option -g pane-border-fg blue
#set-option -g pane-active-border-fg red
#
## pane number display
#set-option -g display-panes-active-colour red
#set-option -g display-panes-colour blue
###########################################################################
# Color scheme (Cobalt)
# default statusbar colors
set-option -g status-fg white
set-option -g status-bg cyan
# active window title colors
set-window-option -g window-status-current-fg red
set-window-option -g window-status-current-bg yellow
# pane border
set-option -g pane-border-fg cyan
set-option -g pane-active-border-fg red
# pane number display
set-option -g display-panes-active-colour red
set-option -g display-panes-colour cyan
###########################################################################
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment