forked from thoughtbot/dotfiles
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtmux.conf
164 lines (118 loc) · 4.74 KB
/
tmux.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# act like vim
set -g prefix2 C-s
# start window numbers at 1 to match keyboard order with tmux window order
set -g base-index 1
set-window-option -g pane-base-index 1
# renumber windows sequentially after closing any of them
set -g renumber-windows on
# soften status bar color from harsh green to light gray
set -g status-style bg='#666666',fg='#aaaaaa'
# remove administrative debris (session name, hostname, time) in status bar
set -g status-left ''
set -g status-right ''
# increase scrollback lines
set -g history-limit 10000
# Avoid esc key delay
set -sg escape-time 0
# prefix -> back-one-character
bind-key C-b send-prefix
# prefix-2 -> forward-incremental-history-search
bind-key C-s send-prefix -2
# don't suspend-client
unbind-key C-z
# split windows like vim
# vim's definition of a horizontal/vertical split is reversed from tmux's
bind s split-window -v -c "#{pane_current_path}"
bind v split-window -h -c '#{pane_current_path}'
bind ^s split-window -v -c "#{pane_current_path}"
bind ^v split-window -h -c "#{pane_current_path}"
# open panes in same path when using canonical tmux splits
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
# 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 ^h select-pane -L
bind ^j select-pane -D
bind ^k select-pane -U
bind ^l select-pane -R
bind-key -r C-h select-window -t :-
bind-key -r C-l select-window -t :+
# resize panes like vim
bind -r < resize-pane -L 10
bind -r > resize-pane -R 10
bind -r - resize-pane -D 10
bind -r + resize-pane -U 10
bind = select-layout tiled
# bind : to command-prompt like vim
# this is the default in tmux already
bind : command-prompt
# session management
bind C new-session
bind L choose-session
# vi-style controls for copy mode
setw -g mode-keys vi
# Set the prefix to ^A, like screen
unbind C-b
set -g prefix ^A
bind a send-prefix
# Start numbering windows at 1
set -g base-index 1
# automatically renumber remaining windows when closing a window
set-option -g renumber-windows on
bind ^a last-window # toggle last window like screen
set -g update-environment "DISPLAY WINDOWID SSH_ASKPASS SSH_AGENT_PID SSH_CONNECTION"
bind K confirm kill-server
bind X confirm kill-window
# longer scrollback
set -g history-limit 10000
set -g status-bg default
set -g status-fg white
# left side of status bar holds "(>- session name -<)"
set -g status-left-length 100
set -g status-left-style bg=green,fg=black,bold
set -g status-left ''
# right side of status bar holds "[host name] (date time)"
set -g status-right-length 100
set -g status-right-style fg=black,bold
set -g status-right '#[fg=colour214,bg=colour235] #H#[fg=colour238]:#[fg=colour178]#S #[fg=colour039,bg=colour238] %y.%m.%d %H:%M '
# make background window look like white tab
set-window-option -g window-status-style bg=default,fg=white,none
set-window-option -g window-status-format '#[fg=colour214,bg=colour235] #I #[fg=white,bg=colour236] #W #[default]'
# make foreground window look like bold yellow foreground tab
set-window-option -g window-status-current-style none
set-window-option -g window-status-current-format '#[fg=black,bg=colour214] #I #[fg=brightwhite,bg=colour238] #W #[default]'
# active terminal yellow border, non-active white
set -g pane-border-style bg=default,fg=colour238
set -g pane-active-border-style bg=default,fg=colour213
# Add truecolor and italic support
set -g default-terminal 'tmux-256color'
set -as terminal-overrides ',xterm*:Tc:sitm=\E[3m'
# reload tmux config file with C-a r
bind r source ~/.tmux.conf
# create a new window and prompt for name
bind N command-prompt "new-window -n '%%' -c '#{pane_current_path}'"
bind c new-window -c '#{pane_current_path}'
# Rebind prefix to b
bind B set -g prefix ^b
bind A set -g prefix ^a
# Works with ~/.ssh/rc to allow re-attaching to tmuxes after ssh reconnect
setenv -g SSH_AUTH_SOCK $HOME/.ssh/ssh_auth_sock
# Save tmux history - http://unix.stackexchange.com/questions/26548/write-all-tmux-scrollback-to-a-file
bind-key S command-prompt -p 'save history to filename:' -I '~/tmux.history' 'capture-pane -S -32768 ; save-buffer %1 ; delete-buffer'
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
# override default resurrect bindings to avoid conflict with existing shortcut
set -g @resurrect-save 'Z'
set -g @resurrect-restore 'R'
# Restore vim sessions with tmux-resurrect
set -g @resurrect-strategy-vim 'session'
# Make zsh the default shell
set -g default-shell /bin/zsh
# Local config
if-shell "[ -f ~/.tmux.conf.local ]" 'source ~/.tmux.conf.local'
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'