mirror of
https://github.com/tmux/tmux.git
synced 2024-11-14 16:18:48 +00:00
78 lines
4.5 KiB
Plaintext
78 lines
4.5 KiB
Plaintext
# 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" |