mirror of
https://github.com/tmux/tmux.git
synced 2024-11-01 15:18:53 +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 ~
|