|
|
# Start window numbering at 1 |
|
|
set -g base-index 1 |
|
|
|
|
|
# Use 256 colors |
|
|
# Note, this broke my colors in zsh, so off for now01/25/15 |
|
|
set -g default-terminal "screen-256color" |
|
|
|
|
|
|
|
|
# COLOUR (Solarized 256) |
|
|
# default statusbar colors |
|
|
set-option -g status-bg colour235 #base02 |
|
|
set-option -g status-fg colour136 #yellow |
|
|
set-option -g status-attr default |
|
|
|
|
|
# default window title colors |
|
|
set-window-option -g window-status-fg colour244 #base0 |
|
|
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 colour166 #orange |
|
|
set-window-option -g window-status-current-bg default |
|
|
#set-window-option -g window-status-current-attr bright |
|
|
|
|
|
# pane border |
|
|
set-option -g pane-border-fg colour235 #base02 |
|
|
set-option -g pane-active-border-fg colour240 #base01 |
|
|
|
|
|
# message text |
|
|
set-option -g message-bg colour235 #base02 |
|
|
set-option -g message-fg colour166 #orange |
|
|
|
|
|
# pane number display |
|
|
set-option -g display-panes-active-colour colour33 #blue |
|
|
set-option -g display-panes-colour colour166 #orange |
|
|
|
|
|
# clock |
|
|
set-window-option -g clock-mode-colour colour64 #green |
|
|
|
|
|
# remap prefix to Ctrl+A |
|
|
set -g prefix C-a |
|
|
unbind C-b |
|
|
bind-key C-a send-prefix |
|
|
|
|
|
# set up clock |
|
|
set -g clock-mode-style 12 |
|
|
|
|
|
# renumber windows after removal |
|
|
set -g renumber-windows on |
|
|
|
|
|
# keep more history |
|
|
set -g history-limit 10000 |
|
|
|
|
|
# no escape delay |
|
|
set -sg escape-time 0 |
|
|
|
|
|
unbind % |
|
|
bind | split-window -h |
|
|
bind - split-window -v |
|
|
|
|
|
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 |
|
|
|
|
|
setw -g monitor-activity on |
|
|
setw -g visual-activity on |
|
|
|
|
|
# mouse |
|
|
setw -g mode-mouse on |
|
|
set-option -g mouse-select-pane on |
|
|
set-option -g mouse-select-window on |
|
|
|
|
|
bind Z source-file ~/.tmux/dev |
|
|
bind Q source-file ~/.tmux/devEditors |
|
|
bind A source-file ~/.tmux/devMinimal |
|
|
|
|
|
# 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 ' |
|
|
|
|
|
# See this blog post for additional detail: |
|
|
# http://robots.thoughtbot.com/post/53022241323/seamlessly-navigate-vim-and-tmux-splits |
|
|
bind -n C-h run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim$' && tmux send-keys C-h) || tmux select-pane -L" |
|
|
bind -n C-j run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim$' && tmux send-keys C-j) || tmux select-pane -D" |
|
|
bind -n C-k run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim$' && tmux send-keys C-k) || tmux select-pane -U" |
|
|
bind -n C-l run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim$' && tmux send-keys C-l) || tmux select-pane -R" |
|
|
bind -n C-\ run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim$' && tmux send-keys 'C-\\') || tmux 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 |
|
|
|
|
|
set -g display-panes-time 600 |
|
|
|
|
|
# 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 |
|
|
|
|
|
# reload tmux.conf with prefix-r |
|
|
bind C-r source-file ~/.tmux.conf \; display "Reloaded ~/.tmux.conf" |
|
|
|
|
|
# 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
|
|
|
|