#################################### ## BINDINGS ## #################################### # Change default Prefix key to Ctrl+Space unbind C-b set -g prefix C-Space # Reload config with Prefix+R unbind r bind r source-file ~/.tmux.conf \; display "Reloaded ~/.tmux.conf" # mouse mode set -g mouse on bind m set -g mouse on \; display 'Mouse: ON' bind M set -g mouse off \; display 'Mouse: OFF' # Increase history limit set -g history-limit 100000 # shorter escape time set -sg escape-time 20 set -sg repeat-time 600 # Copy Mode (Prefix+[) set-window-option -g mode-keys vi # Vim keys to navigate (Ctrl+u, Ctrl+d, /) unbind -T copy-mode-vi Space; # Begin-selection unbind -T copy-mode-vi Enter; # Copy-selection bind -T copy-mode-vi v send-keys -X begin-selection # select text with 'v' bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xsel --clipboard" # copy text with 'y' ## Vim integrations # 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 -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L" bind -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D" bind -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U" bind -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R" bind -n C-\\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l" ## PANES # Split panes with v and h unbind v unbind h unbind % # Split vertically unbind '"' # Split horizontally bind v split-window -h -c "#{pane_current_path}" bind h split-window -v -c "#{pane_current_path}" # Navigating panes with Ctrl+{hjkl} bind -n C-h select-pane -L bind -n C-j select-pane -D bind -n C-k select-pane -U bind -n C-l select-pane -R # pane resize with left/right/up/down bind -r Left resize-pane -L 5 bind -r Right resize-pane -R 5 bind -r Up resize-pane -U 5 bind -r Down resize-pane -D 5 # swap panes with <> bind > swap-pane -D bind < swap-pane -U ## WINDOWS # Windows start at 1 not 0 set -g base-index 1 set-window-option -g pane-base-index 1 # Window operations unbind n # Move to next window unbind w # Change current window interactively bind n command-prompt "rename-window '%%'" bind w new-window -c "#{pane_current_path}" bind -n M-j previous-window # Alt+j bind -n M-k next-window # Alt+k #################################### ## DESIGN ## #################################### # default statusbar colors set-option -g status-style fg=yellow,bg=black # default window title colors set-window-option -g window-status-style fg=brightblue,bg=default # set-window-option -g window-status-style dim # active window title colors set-window-option -g window-status-current-style fg=brightred,bg=default #set-window-option -g window-status-current-style bright # pane border set-option -g pane-border-style fg=black set-option -g pane-active-border-style fg=brightgreen # message text set-option -g message-style fg=brightred,bg=black # pane number display set-option -g display-panes-active-colour blue set-option -g display-panes-colour brightred # clock set-window-option -g clock-mode-colour brightgreen # bell set-window-option -g window-status-bell-style fg=black,bg=red