## Behavior ############### # Zero-based indexing is fine in programming languages, but not so much in # a multiplexer when zero is on the other side of the keyboard. set -g base-index 1 set -g renumber-windows on setw -g automatic-rename on # status bar set-option -g status-utf8 on # Remove the delay set -s escape-time 0 # Rather than constraining window size to the maximum size of any client # connected to the *session*, constrain window size to the maximum size of any # client connected to *that window*. Much more reasonable. setw -g aggressive-resize off # go zsh, go set-option -g default-shell $SHELL # a mouse set -g mode-mouse on setw -g mouse-select-window on setw -g mouse-select-pane on setw -g mouse-resize-pane on set-option -gw xterm-keys on ## Key bindings ########### # Remap the key prefix set -g prefix C-c unbind C-b # Restore sigterm C-c bind C-c send-prefix # Go to last active window bind-key a last-window # reload config without killing server bind r source-file ~/.tmux.conf \; display-message " Config reloaded..". # set vi keys setw -g mode-keys vi unbind [ bind Escape copy-mode unbind p bind p paste-buffer 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" ## Pane management ##### # Better splitting keybinds unbind % unbind '"' bind s split-window -v bind v split-window -h # Navigate between panes bind -n C-h run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)g?(view|vim?)(diff)?$' && tmux send-keys C-h) || tmux select-pane -L" bind -n C-j run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)g?(view|vim?)(diff)?$' && tmux send-keys C-j) || tmux select-pane -D" bind -n C-k run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)g?(view|vim?)(diff)?$' && tmux send-keys C-k) || tmux select-pane -U" bind -n C-l run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)g?(view|vim?)(diff)?$' && tmux send-keys C-l) || tmux select-pane -R" bind -n C-\ run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)g?(view|vim?)(diff)?$' && tmux send-keys 'C-\\') || tmux select-pane -l" bind H resize-pane -L 5 bind J resize-pane -D 5 bind K resize-pane -U 5 bind L resize-pane -R 5 bind n next-window bind p previous-window # Disable confirmation bind & kill-window bind x kill-pane # after copying to a tmux buffer, hit y again to copy to clipboard bind y run "tmux save-buffer - | reattach-to-user-namespace pbcopy" # quick view of processes bind '~' split-window "exec top" ## Looks ######################## set -g default-terminal "screen-256color" set -g status-bg colour235 set -g status-fg white set-window-option -g window-status-current-fg black set-window-option -g window-status-current-bg yellow set -g pane-border-fg colour235 set -g pane-border-bg black set -g pane-active-border-fg yellow set -g pane-active-border-bg black ## Status bar ################### set-option -g status-justify left set-option -g status-right-length 60 set-option -g status-left-length 60 set-option -g status-left '#[bg=yellow] #[fg=black]#[bold]#S #[default] ' set-option -g status-right '#(hostname) ' set -g window-status-format "#I. #W" set -g window-status-current-format " #I. #W "