| # use UTF8 |
| set -g utf8 |
| set-window-option -g utf8 on |
|
|
| # make tmux display things in 256 colors |
| # set -g default-terminal "screen-256color" |
| set -g default-terminal "xterm" |
| set-window-option -g xterm-keys on |
|
|
| # set scrollback history to 10000 (10k) |
| set -g history-limit 10000 |
|
|
| # set Ctrl-a as the default prefix key combination |
| # and unbind C-b to free it up |
| set -g prefix C-j |
| unbind C-b |
| unbind C-a |
|
|
| # use send-prefix to pass C-a through to application |
| bind C-j send-prefix |
|
|
| # shorten command delay |
| set -sg escape-time 1 |
|
|
| # set window and pane index to 1 (0 by default) |
| set-option -g base-index 1 |
| setw -g pane-base-index 1 |
|
|
| # reload ~/.tmux.conf using PREFIX r |
| bind r source-file ~/.tmux.conf \; display "Reloaded!" |
|
|
| # use PREFIX | to split window horizontally and PREFIX - to split vertically |
| bind | split-window -h |
| bind \ split-window -h |
| bind - split-window -v |
|
|
| # Make the current window the first window |
| bind T swap-window -t 1 |
|
|
| # map Vi movement keys as pane movement keys |
| # bind h select-pane -L |
| # bind j select-pane -D |
| # bind k select-pane -U |
| # bind l select-pane -R |
| bind w select-pane -l #select last pane |
| bind-key -n M-W last-pane |
|
|
| # and use C-h and C-l to cycle thru panes |
| bind -r C-h select-window -t :- |
| bind -r C-l select-window -t :+ |
|
|
| # resize panes using PREFIX H, J, K, L |
| bind -r H resize-pane -L 5 |
| bind -r J resize-pane -D 5 |
| bind -r K resize-pane -U 5 |
| bind -r L resize-pane -R 5 |
|
|
| # explicitly disable mouse control |
| set -g mode-mouse on |
| set -g mouse-resize-pane on |
| set -g mouse-select-pane on |
| set -g mouse-select-window on |
| set-option -g mouse on |
| set-option -g mouse-utf8 on |
| # --------------------- |
| # Copy & Paste |
| # --------------------- |
| # provide access to the clipboard for pbpaste, pbcopy |
| # set-option -g default-command "reattach-to-user-namespace -l zsh" |
| # set-option -g default-command "bash" |
| set-option -g default-command "zsh" |
| set-window-option -g automatic-rename on |
|
|
| # use vim keybindings in copy mode |
| setw -g mode-keys vi |
|
|
| # setup 'v' to begin selection as in Vim |
| bind-key -t vi-copy v begin-selection |
| #bind-key -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy" |
| bind-key -t vi-copy y copy-pipe "xclip -selection clipboard -i" |
|
|
| # update default binding of 'Enter' to also use copy-pipe |
| unbind -t vi-copy Enter |
| # bind-key -t vi-copy Enter copy-pipe "reattach-to-user-namespace pbcopy" |
| bind-key -t vi-copy Enter copy-pipe "xclip -selection clipboard -i" |
|
|
| # bind y run 'tmux save-buffer - | reattach-to-user-namespace pbcopy ' |
| # bind C-y run 'tmux save-buffer - | reattach-to-user-namespace pbcopy ' |
| bind y run "tmux show-buffer | xclip -i -selection clipboard" |
| bind C-y run "tmux show-buffer | xclip -i -selection clipboard" |
|
|
| # ---------------------- |
| # set some pretty colors |
| # ---------------------- |
| # set pane colors - hilight the active pane |
| # set-option -g pane-border-fg colour235 #base02 |
| # set-option -g pane-active-border-fg colour240 #base01 |
|
|
| # colorize messages in the command line |
| # set-option -g message-bg black #base02 |
| # set-option -g message-fg brightred #orange |
|
|
| # ---------------------- |
| # Status Bar |
| # ----------------------- |
| set-option -g status on # turn the status bar on |
| set -g status-utf8 on # set utf-8 for the status bar |
| set -g status-interval 5 # set update frequencey (default 15 seconds) |
| set -g status-justify centre # center window list for clarity |
| set-option -g status-position top # position the status bar at top of screen |
|
|
| # visual notification of activity in other windows |
| setw -g monitor-activity on |
| set -g visual-activity on |
|
|
| # set color for status bar |
| #set-option -g status-bg colour235 #base02 |
| # set-option -g status-bg default |
| # set-option -g status-fg yellow #yellow |
| # set-option -g status-fg white |
| # set-option -g status-attr dim |
|
|
| # set window list colors - red for active and cyan for inactive |
| #set-window-option -g window-status-fg white |
| #set-window-option -g window-status-bg colour236 |
| #set-window-option -g window-status-attr bright |
|
|
| #set-window-option -g window-status-current-fg black |
| #set-window-option -g window-status-current-bg yellow |
| #set-window-option -g window-status-current-attr bright |
|
|
| # show host name and IP address on right side of status bar |
| set -g status-right-length 70 |
| set -g status-right "#[fg=green]#h@#[fg=yellow]#(ifconfig eth0 | grep 'inet ' | awk '{print $2}')" |
|
|
| # show session name, window & pane number, date and time on right side of |
| # status bar |
| set -g status-left-length 60 |
| set -g status-left "#[fg=green]::%l:%M %p#[fg=yellow]::%Y-%m-%d::#[fg=blue]#S #[fg=colour255]Tab#[fg=yellow]#I#[fg=colour255]:Pane#[fg=yellow]#P" |
|
|
| #### 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 bright |
|
|
| # 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 yellow |
| set-window-option -g window-status-current-bg default |
| set-window-option -g window-status-current-attr bright |
|
|
| # set-window-option -g window-status-current-format "#[fg=colour235, bg=colour166]#[fg=colour255, bg=colour166]#I:#W #[fg=colour166, bg=colour235]" |
| # set-window-option -g window-status-format "#[fg=colour235, bg=colour244]#[fg=colour255, bg=colour244]#I:#W#F#[fg=colour244, bg=colour235]" |
| # 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 |
| # Smart pane switching with awareness of vim splits |
| # bind -n C-h run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)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 '(^|\/)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 '(^|\/)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 '(^|\/)vim(diff)?$' && tmux send-keys C-l) || tmux select-pane -R" |
| # bind -n C-\ run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys 'C-\\') || tmux select-pane -l" |
|
|
| # key binding for ALT+num |
| # switch windows alt+number |
| bind-key -n M-1 select-window -t 1 |
| bind-key -n M-2 select-window -t 2 |
| bind-key -n M-3 select-window -t 3 |
| bind-key -n M-4 select-window -t 4 |
| bind-key -n M-5 select-window -t 5 |
| bind-key -n M-6 select-window -t 6 |
| bind-key -n M-7 select-window -t 7 |
| bind-key -n M-8 select-window -t 8 |
| bind-key -n M-9 select-window -t 9 |
| bind-key -n M-q display-panes |
|
|
| bind C-k rotate-window |
| bind k rotate-window |
| bind C-j last-pane |
| bind j last-pane |
|
|
|
|
| # List of plugins |
| set -g @plugin 'tmux-plugins/tpm' |
| set -g @plugin 'tmux-plugins/tmux-sensible' |
| set -g @plugin 'tmux-plugins/tmux-yank' |
|
|
| # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) |
| run '~/.tmux/plugins/tpm/tpm' |