| # Scott Rochford's tmux configuration |
| # |
| # change the prefix to the GNU screen default (avoids clash with page up in vi) |
| set -g prefix C-a |
| unbind-key C-b |
| bind-key C-a send-prefix |
| # toggle sending input to all panes |
| bind-key b set-window-option synchronize-panes |
| # alternative to ',' which doesn't pre-fill the prompt with the existing name |
| bind-key < command-prompt "rename-window '%%'" |
| |
| # Disabled all of these in favour of changing 'default-command' below. |
| #bind-key C-p pipe-pane -o 'cat >>~/tmux_logs/output.$(echo #I-#P-#W-#T | sed "s/[^[:alnum:].-]/_/g")' \; display-message 'Toggled logging' |
| # From http://unix.stackexchange.com/questions/5832/is-there-an-equivalent-of-gnu-screens-log-command-in-tmux |
| # bind-key H pipe-pane -o "exec cat >>$HOME/'#W-tmux.log'" \; display-message 'Toggled logging to $HOME/#W-tmux.log' |
| #bind-key H pipe-pane "exec cat >>$HOME/'#W-tmux.log'" \; display-message 'Started logging to $HOME/#W-tmux.log' |
| #bind-key h pipe-pane \; display-message 'Ended logging to $HOME/#W-tmux.log' |
| |
| #set -g utf8 on |
| |
| set-option -g history-limit 32768 |
| |
| # no longer available in 2.2 |
| #set-option -g mouse-select-pane on |
| #set-option -g mouse-select-window on |
| set-option -g mouse on |
| |
| # increase the amount of time status bar messages are displayed for (default 1000 I think) |
| set-option -g display-time 1500 |
| # unfortunately this seems to have no effect in putty :-( |
| set-option -g set-clipboard on |
| set-option -g default-command 'tmux pipe-pane -o "cat >>~/tmux_logs/output-`date +%Y%m%d-%H%M%S-$$`" ; /bin/ksh -l' |
| # |
| # allow yank into system clipboard |
| # from http://stackoverflow.com/questions/17255031/how-to-copy-from-tmux-running-in-putty-to-windows-clipbard |
| # |
| # for some reason this is wrapping at 80 cols, using save- instead of show- helps |
| # -b for background is needed because xclip continues to run to service the clipboard paste reqeusts until the |
| # clipboard buffer is replaced with some new contents |
| #bind C-y run-shell -b "tmux save-buffer - | DISPLAY=$(<~/.xdisplay) xclip -selection clipboard -in && tmux display-message 'xclipped successfully'" |
| bind C-y save-buffer ~/etc/clipboard.pipe |
| # |
| # this was just for testing, but interestingly for some reason tmux-show-buffer >/tmp/t never terminates, writing to a pipe works fine?? |
| #bind C-z run-shell "tmux show-buffer | cat >/tmp/t" |
| # move x clipboard into tmux paste buffer |
| #bind C-p run-shell -b "xclip -o -selection clipboard | tmux load-buffer - ; tmux paste-buffer" |
| bind C-p run-shell "DISPLAY=$(<~/.xdisplay) xclip -o -selection clipboard | tmux load-buffer - ; tmux paste-buffer" |
| |
| # switch to last-but-one window (like prefix-l but last, last) |
| # only works on tmux-2.4 + with Nicholas Marriott's patch from my feature request, unless it reached mainline.... |
| #bind k run-shell "tmux select-window -t $(tmux list-windows -F '#{session_stack}' | awk -F, '{print $3;exit}END{print $1}')" |
| bind k run-shell "tmux select-window -t $(echo #{session_stack} | awk -F, '{w=$1}NF>=3{w=$3;exit}END{print w}')" |
| |
| # switch to oldest window (for clean-up), not sure why brackets are required around (NF) here... |
| bind K run-shell "tmux select-window -t $(echo #{session_stack} | awk -F, '{print $(NF)}')" |
| |
| # prompt for hosts to connect to, open a new synchronized window with horizontally split panes for each host, supports brace expansion |
| bind N command-prompt -p hosts: 'run-shell -b "bash -c \"~/lbin/nw %% >/dev/null\""' |
| |
| # seems to cause unexpected resizes when focussing on putty :-( |
| #set-option mouse-resize-pane on |
| |
| #05:59 < Celti> annihilannic: I believe the #{pane_in_mode} format does what you want |
| #05:59 < Celti> put it in your statusline |
| #05:59 < Celti> annihilannic: No, my mistake, I should have read farther down, you want #{pane_synchronized} |
| # only works in tmux 2.0?, higher than 1.6.3 anyway |
| set-option -g window-status-format ' #I:#W#F#{?pane_synchronized,S,}' |
| #set-option -g window-status-current-format ' #I:#W#{?pane_synchronized,[sync],}#F' |
| # to highlight in red when sync is on... not sure why I did this with set-window-option instead of set-option, perhaps |
| # both work? |
| set-window-option -g window-status-current-format "#{?pane_synchronized,#[bg=red],}#{?window_zoomed_flag,#[bg=yellow],} #I:#W#F#{?pane_synchronized,S,}" |
| # |
| # also only in 2.0? if I use this, don't need #F in window-status-*-format? - actually, nah, |
| # still useful for showing [Z]oomed, or - last active, etc. |
| set-option -g window-status-current-style bg=blue |
| |
| # Toggle input on a pane (from Thomas Sattler) |
| bind-key R if -F '#{pane_input_off}' "select-pane -e; select-pane -P fg=default" "select-pane -d; select-pane -P fg=yellow" |