| #---------------------------------------------------------------------------# |
| # .tmux.conf |
| # Helmut K. C. Tessarek, Last update 2018-10-16 |
| #---------------------------------------------------------------------------# |
| |
| #---------------------------------------------------------------------------# |
| # set prefix key to ctrl+a / ctrl-b is used in vi for going back one page |
| #---------------------------------------------------------------------------# |
| unbind C-b |
| set -g prefix C-a |
| |
| #---------------------------------------------------------------------------# |
| # send the prefix to client inside window (nested sessions) |
| #---------------------------------------------------------------------------# |
| bind-key a send-prefix |
| |
| #---------------------------------------------------------------------------# |
| # toggle last window like screen |
| #---------------------------------------------------------------------------# |
| bind-key C-a last-window |
| |
| #---------------------------------------------------------------------------# |
| # start window indexing at one instead of zero |
| #---------------------------------------------------------------------------# |
| #set -g base-index 1 |
| |
| #---------------------------------------------------------------------------# |
| # default terminal - we want 256 colors !!! |
| #---------------------------------------------------------------------------# |
| set -g default-terminal "screen-256color" |
| |
| #---------------------------------------------------------------------------# |
| # on-screen time for status messages in ms |
| #---------------------------------------------------------------------------# |
| set -g display-time 2000 |
| |
| #---------------------------------------------------------------------------# |
| # on-screen time for display-panes in ms |
| #---------------------------------------------------------------------------# |
| set -g display-panes-time 2000 |
| |
| #---------------------------------------------------------------------------# |
| # color for display pane indicator |
| #---------------------------------------------------------------------------# |
| set -g display-panes-colour "cyan" |
| #set -g display-panes-active-colour "#0087ff" |
| #set -g display-panes-active-colour "red" |
| |
| #---------------------------------------------------------------------------# |
| # open a man page in new window |
| #---------------------------------------------------------------------------# |
| unbind m |
| bind m command-prompt "split-window 'exec man %%'" |
| |
| #---------------------------------------------------------------------------# |
| # quick view of processes |
| #---------------------------------------------------------------------------# |
| #bind '~' split-window "exec htop" |
| |
| #---------------------------------------------------------------------------# |
| # scrollback buffer n lines |
| #---------------------------------------------------------------------------# |
| set -g history-limit 5000 |
| |
| #---------------------------------------------------------------------------# |
| # toggle status bar |
| #---------------------------------------------------------------------------# |
| unbind b |
| bind-key b set-option status |
| |
| #---------------------------------------------------------------------------# |
| # resize panes like vim |
| # feel free to change the "1" to however many lines you want to resize by, |
| # only one at a time can be slow |
| #---------------------------------------------------------------------------# |
| unbind < |
| unbind > |
| unbind - |
| unbind + |
| bind -r < resize-pane -L 1 |
| bind -r > resize-pane -R 1 |
| bind -r - resize-pane -D 1 |
| bind -r + resize-pane -U 1 |
| |
| #---------------------------------------------------------------------------# |
| # toggle mouse helpers |
| #---------------------------------------------------------------------------# |
| unbind Enter |
| unbind C-m |
| bind C-m set-option mouse \; display-message 'mouse -> #{?mouse,on,off}' |
| |
| #---------------------------------------------------------------------------# |
| # Reload config file |
| #---------------------------------------------------------------------------# |
| unbind R |
| bind-key R source-file ~/.tmux.conf \; display-message "Reloading configuration done" |
| |
| #---------------------------------------------------------------------------# |
| # start ssh session in new window |
| #---------------------------------------------------------------------------# |
| unbind S |
| bind-key S command-prompt "new-window -n %1 'ssh %1'" |
| |
| #---------------------------------------------------------------------------# |
| # start new session |
| #---------------------------------------------------------------------------# |
| unbind C |
| bind-key C command-prompt "new-session -s %1" |
| |
| #---------------------------------------------------------------------------# |
| # Keys to switch session |
| #---------------------------------------------------------------------------# |
| bind Q switchc -t0 |
| bind W switchc -t compile |
| bind E switchc -t config |
| |
| #---------------------------------------------------------------------------# |
| # break pane in background |
| #---------------------------------------------------------------------------# |
| unbind '@' |
| bind '@' break-pane -d |
| |
| #---------------------------------------------------------------------------# |
| # join pane with target window |
| #---------------------------------------------------------------------------# |
| unbind ^ |
| bind ^ command-prompt "join-pane -t %1" |
| |
| #---------------------------------------------------------------------------# |
| # move around panes with hjkl, as one would in vim after pressing ctrl-w |
| #---------------------------------------------------------------------------# |
| #bind h select-pane -L |
| #bind j select-pane -D |
| #bind k select-pane -U |
| #bind l select-pane -R |
| |
| #---------------------------------------------------------------------------# |
| # bind : to command-prompt like vim |
| # this is the default in tmux already |
| #---------------------------------------------------------------------------# |
| bind : command-prompt |
| |
| #---------------------------------------------------------------------------# |
| # Remain on exit |
| #---------------------------------------------------------------------------# |
| #setw -g remain-on-exit on |
| |
| #---------------------------------------------------------------------------# |
| # vi-style controls for copy mode |
| #---------------------------------------------------------------------------# |
| setw -g mode-keys vi |
| |
| #---------------------------------------------------------------------------# |
| # Make mouse useful in copy mode |
| #---------------------------------------------------------------------------# |
| #setw -g mode-mouse on |
| |
| #---------------------------------------------------------------------------# |
| # More straight forward key bindings for splitting |
| #---------------------------------------------------------------------------# |
| unbind % |
| unbind v |
| #bind | split-window -h |
| bind v split-window -h |
| unbind '"' |
| unbind h |
| #bind - split-window -v |
| bind h split-window -v |
| |
| #---------------------------------------------------------------------------# |
| # Synchronize panes |
| #---------------------------------------------------------------------------# |
| unbind y |
| bind y set-window-option synchronize-panes \; display-message 'synchronize-panes -> #{?synchronize-panes,on,off}' |
| |
| #---------------------------------------------------------------------------# |
| # Other key codes: Tab, BTab, Escape |
| #---------------------------------------------------------------------------# |
| |
| #---------------------------------------------------------------------------# |
| # Clock |
| #---------------------------------------------------------------------------# |
| setw -g clock-mode-colour green |
| setw -g clock-mode-style 24 |
| |
| #---------------------------------------------------------------------------# |
| # Terminal emulator window title |
| #---------------------------------------------------------------------------# |
| set -g set-titles on |
| set -g set-titles-string '#S:#I.#P #W' |
| |
| #---------------------------------------------------------------------------# |
| # Status Bar |
| #---------------------------------------------------------------------------# |
| set -g status-bg black |
| set -g status-fg white |
| set -g status-interval 1 |
| set -g status-left-length 30 |
| set -g status-left '#[fg=green]#h#[default] ' |
| #set -g status-right '#[fg=yellow]#(cut -d " " -f 1-4 /proc/loadavg)#[default] #[fg=cyan,bold]%Y-%m-%d %H:%M:%S#[default]' |
| #set -g status-right '#[fg=yellow,bold]%Y-%m-%d %H:%M#[default]' |
| set -g status-right '#[fg=yellow]%Y-%m-%d %H:%M %Z#[default]' |
| #set -g status-justify center |
| #set -g status-keys vi |
| |
| set -g allow-rename off |
| setw -g automatic-rename on |
| |
| #---------------------------------------------------------------------------# |
| # Highlighting the active window in status bar |
| #---------------------------------------------------------------------------# |
| #setw -g window-status-current-bg red |
| set-option -g window-status-format "#I:#W#F#{?pane_synchronized,S,}" |
| set-window-option -g window-status-current-format "#{?pane_synchronized,#[bg=red],}#{?window_zoomed_flag,#[bg=colour130],}#I:#W#F#{?pane_synchronized,S,}" |
| set-option -g window-status-current-style bg=blue |
| |
| #---------------------------------------------------------------------------# |
| # global update environment |
| #---------------------------------------------------------------------------# |
| set -g update-environment "DISPLAY SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY TZ" |
| |
| #---------------------------------------------------------------------------# |
| # settings for AIX |
| # terminal overrides to enable colors |
| # set default terminal to vt100 or xterm (screen does not exist on AIX) |
| #---------------------------------------------------------------------------# |
| if-shell "uname|grep AIX" 'set -g terminal-overrides "xterm*:XT,xterm*:setab=\\E[4%p1%dm,xterm*:setaf=\\E[3%p1%dm"' |
| #if-shell "uname|grep AIX" "set -g default-terminal vt100" |
| if-shell "uname|grep AIX" "set -g default-terminal xterm" |
| |
| #---------------------------------------------------------------------------# |
| # settings for macOS |
| #---------------------------------------------------------------------------# |
| if-shell "uname|grep Darwin" 'set -g default-command "/bin/bash -l"' |
| |
| #---------------------------------------------------------------------------# |
| # Pane coloring |
| # set inactive/active window styles |
| #---------------------------------------------------------------------------# |
| set -g window-style "fg=colour247,bg=colour234" |
| set -g window-active-style "fg=colour250,bg=black" |
| set -g @TPCS "1" |
| |
| #---------------------------------------------------------------------------# |
| # pane border - different style / use cyan |
| #---------------------------------------------------------------------------# |
| #set -g pane-border-bg colour235 |
| #set -g pane-border-fg colour238 |
| #set -g pane-active-border-bg colour234 |
| #set -g pane-active-border-fg colour51 |
| |
| #---------------------------------------------------------------------------# |
| # toggle pane coloring on/off |
| #---------------------------------------------------------------------------# |
| unbind C-b |
| bind C-b if -F '#{@TPCS}' \ |
| 'set -g window-style "fg=default,bg=default" ; set -g window-active-style "fg=default,bg=default" ; set -g @TPCS "0"; display-message "Pane coloring -> off"' \ |
| 'set -g window-style "fg=colour247,bg=colour234" ; set -g window-active-style "fg=colour250,bg=black" ; set -g @TPCS "1"; display-message "Pane coloring -> on"' |
| |
| #---------------------------------------------------------------------------# |
| # List of plugins |
| #---------------------------------------------------------------------------# |
| set -g @plugin 'tmux-plugins/tpm' |
| #set -g @plugin 'tmux-plugins/tmux-sensible' |
| set -g @plugin 'tmux-plugins/tmux-resurrect' |
| set -g @plugin 'tmux-plugins/tmux-logging' |
| |
| set -g @resurrect-capture-pane-contents 'on' |
| set -g @resurrect-save-bash-history 'on' |
| |
| set -g @logging-path $HOME |
| set -g @screen-capture-path $HOME |
| set -g @save-complete-history-path $HOME |
| |
| # Other examples: |
| # set -g @plugin 'github_username/plugin_name' |
| # set -g @plugin 'git@github.com/user/plugin' |
| # set -g @plugin 'git@bitbucket.com/user/plugin' |
| |
| #---------------------------------------------------------------------------# |
| # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) |
| #---------------------------------------------------------------------------# |
| run '~/.tmux/plugins/tpm/tpm' |