Permalink
Find file
f1b1be2 Jan 4, 2017
@mscoutermarsh @croaky @nXqd @gylaz
139 lines (104 sloc) 4.12 KB
# Bind escape to copy mode
unbind [
bind Escape copy-mode
# p = paste
unbind p
bind p paste-buffer
# no escape delay
set -sg escape-time 0
# remap prefix to Control + a
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# Start window numbering at 1 (default => 0)
set -g base-index 1
set -g clock-mode-style 12
# Renumber windows after removing one
set -g renumber-windows on
# use 256 colors
set -g default-terminal "screen-256color"
# change tmux bar colors
set -g status-bg '#666666'
set -g status-fg '#aaaaaa'
# Keep plenty of history for scrollback
set -g history-limit 10000
# mouse
set -g mouse-resize-pane on
set -g mouse-select-pane on
set -g mouse-select-window on
setw -g mode-mouse on
bind m split-window -h 'reattach-to-user-namespace mutt'
# Use vim keybindings in copy mode
setw -g mode-keys vi
bind-key -t vi-copy v begin-selection
bind-key -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy"
unbind -t vi-copy Enter
bind-key -t vi-copy Enter copy-pipe "reattach-to-user-namespace pbcopy"
unbind -t vi-copy Space
bind -t vi-copy Space jump-again
bind y run 'tmux save-buffer - | reattach-to-user-namespace pbcopy '
bind C-y run 'tmux save-buffer - | reattach-to-user-namespace pbcopy '
# Smart pane switching with awareness of Vim splits.
# See: https://github.com/christoomey/vim-tmux-navigator
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
bind-key -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L"
bind-key -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D"
bind-key -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U"
bind-key -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R"
bind-key -n C-\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l"
# Secondary binding for C-l to retain redraw
bind C-l send-keys 'C-l'
# Easy rotating of panes
bind C-k swap-pane -U
# increase display time
set -g display-panes-time 1200
# status bar stuff
set -g status-left-length 40
# Simplify status bar display.
set -g status-left '[#S]'
set -g status-right "%I:%M %p "
# set -g status-right "#[fg=red][44%%]#[default] - %I:%M %p "
# Dismiss current pane to background window
bind b break-pane -d
bind-key j command-prompt -p "join pane from: " "join-pane -h -s '%%'"
# more intuitive keybindings for splitting
bind \ split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
# Easy return to Vim from tmux runner zoom runner pane
bind C-p run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim$' && tmux send-keys ':VtrZoomRunnerPane' 'C-m') || tmux send-keys 'C-c' && tmux select-pane -l"
# Make C-j display a selectable list of sessions
bind C-j choose-tree
# Keep window names as I set them
setw -g automatic-rename off
# The base index for windows and panes to 1 instead of the default 0.
# # Now prefix 1 is the first window instead of a prefix 0 being the first.
set -g base-index 1
# setw -g pane-base-index 1 # not recognized by my tmux
# Reload tmux.conf with prefix-r
bind C-r source-file ~/.tmux.conf \; display "Reloaded ~/.tmux.conf"
# Set the term environment variable when using tmux
set -g default-terminal "screen-256color"
# Provide access to the clipboard for pbpaste, pbcopy (details: http://goo.gl/DN82E)
set-option -g default-command "reattach-to-user-namespace -l zsh -l"
set-window-option -g automatic-rename on
# Enable VI mode
set-window-option -g mode-keys vi
# Set ability to capture on start and restore on exit window data when running an application
setw -g alternate-screen on
# bind resizing of panes to H,J,K,L (resizes by steps of 10 lines/columns)
# # Note, bindings are repeatable (within the default 500ms time limit) so that
# # you don't have to keep entering the prefix. (Prefix-H-H-H resizes by 15)
bind -n S-Left resize-pane -L 2
bind -n S-Right resize-pane -R 2
bind -n S-Down resize-pane -D 1
bind -n S-Up resize-pane -U 1
unbind -n C-Left
unbind -n C-Down
unbind -n C-Up
unbind -n C-Right
bind -n C-Left resize-pane -L 10
bind -n C-Right resize-pane -R 10
bind -n C-Down resize-pane -D 5
bind -n C-Up resize-pane -U 5
set -g default-terminal "screen-256color"