mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			81 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
set -g default-command "if [ \"$(uname)\" = 'Darwin' ]; then exec reattach-to-user-namespace $SHELL; else exec $SHELL; fi"
 | 
						|
set -g history-limit 32000
 | 
						|
set -g update-environment "DISPLAY WINDOWID SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION SSH_CLIENT SSH_TTY KRB5CCNAME Apple_PubSub_Socket_Render Apple_Ubiquity_Message"
 | 
						|
 | 
						|
# Reset SHLVL (otherwise it is 2 inside tmux)
 | 
						|
setenv -g SHLVL 0
 | 
						|
 | 
						|
# Send esc faster so that neovim won't get so laggy
 | 
						|
# https://github.com/neovim/neovim/issues/2093
 | 
						|
set -g escape-time 100
 | 
						|
 | 
						|
# Disable paste detection
 | 
						|
set -g assume-paste-time 0
 | 
						|
 | 
						|
# Titles and window names
 | 
						|
set -g set-titles on
 | 
						|
set -g set-titles-string "#T"
 | 
						|
 | 
						|
# Make it not so annoying/sticky to switch windows
 | 
						|
set -g repeat-time 170
 | 
						|
 | 
						|
# Don't deattach me when a session ends
 | 
						|
set -g detach-on-destroy off
 | 
						|
 | 
						|
# Make shift+keys work
 | 
						|
setw -g xterm-keys on
 | 
						|
 | 
						|
# Prefix
 | 
						|
set -g prefix ^A
 | 
						|
unbind ^B
 | 
						|
bind ^A send-prefix
 | 
						|
bind a send-prefix
 | 
						|
 | 
						|
# Last window
 | 
						|
bind ^a last
 | 
						|
 | 
						|
# Next & prev
 | 
						|
bind ' ' next
 | 
						|
bind '^ ' next
 | 
						|
bind ^p prev
 | 
						|
 | 
						|
# Status
 | 
						|
set -g status off
 | 
						|
# Need more (cow)bells!
 | 
						|
set -g bell-action any
 | 
						|
set -g bell-on-alert on
 | 
						|
 | 
						|
# Detach
 | 
						|
bind ^d detach
 | 
						|
 | 
						|
# Control the a tmux in a tmux
 | 
						|
bind A send-prefix \; send-prefix
 | 
						|
bind C send-prefix \; send-keys c
 | 
						|
bind n send-prefix \; send-keys ' '
 | 
						|
bind bspace send-prefix \; send-keys p
 | 
						|
bind '#' send-prefix \; send-keys '"'
 | 
						|
 | 
						|
# Other key bindings.
 | 
						|
bind ^r command-prompt "find-window '%%'"
 | 
						|
bind '"' choose-tree -w
 | 
						|
bind w split-window
 | 
						|
bind W split-window -c "#{pane_current_path}"
 | 
						|
bind ^w split-window
 | 
						|
bind I list-windows
 | 
						|
bind i list-windows
 | 
						|
bind D neww 'if who | grep -q "$USER.* via mosh"; then tmux lsc -F "#{client_activity} #{client_tty}" | sort | head -n -1 | awk "{print \$2}" | xargs -n1 tmux detach -t; else for i in $(tmux lsc | cut -d: -f1 | grep -v "^$SSH_TTY$"); do tmux detach -t $i; done; fi'
 | 
						|
bind S neww -t 999 'window=`tmux display -p "#{pane_title}"`; i=0; tmux list-windows | cut -d: -f1 | while read j; do if [ $j != $i ]; then tmux move-window -s $j -t $i; fi; i=$(($i+1)); done' # ; tmux find-window -T "$window"
 | 
						|
bind ^s command-prompt "rename-session '%%'"
 | 
						|
# Make the default HOME always ~
 | 
						|
bind c neww -c ~
 | 
						|
bind ^c new -c ~
 | 
						|
bind escape copy-mode
 | 
						|
# Copy to the OS clipboard
 | 
						|
bind -T copy-mode-vi y send -X copy-pipe-and-cancel "if [ \"$(uname)\" = 'Darwin' ]; then reattach-to-user-namespace pbcopy; else xclip; fi"
 | 
						|
bind j command-prompt "join-pane -s '%%'"
 | 
						|
bind ! break-pane -d
 | 
						|
bind - command-prompt "move-pane -t '%%'"
 | 
						|
 | 
						|
# Makes `tmux a` work even when there isn't a session going on
 | 
						|
new-session -A -c ~
 |