forked from zorab47/dotfiles
-
Notifications
You must be signed in to change notification settings - Fork 0
/
tmux.conf
168 lines (137 loc) · 5.11 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
164
165
166
167
168
# Don't lose ENV
set -ga update-environment ' ITERM_PROFILE TMUX_STATUS_LEFT'
set-window-option -g mode-keys vi
# set-option -ga terminal-overrides ",*:Tc"
set-option -sa terminal-overrides ',*:RGB'
set -g default-terminal "screen-256color"
## keybindings
unbind C-b
unbind C-a
unbind ,
unbind .
unbind n
unbind p
unbind [
unbind C-]
unbind '"'
unbind l
unbind &
unbind "'"
unbind C-Space
set-option -g prefix C-a # C-a for prefix just like screen
bind-key C-a last-window
# bind-key + resize-pane -Z
# bind-key = resize-pane -Z
bind-key | split-window -h
bind-key \ split-window -h
bind-key - split-window -v
# windows and panes
bind-key S command-prompt -p ssh: "new-window -n %1 'ssh %1'"
bind-key u select-window -t :1
bind-key W split-window -c '#{pane_current_path}' -h \; choose-window 'kill-pane ; join-pane -hs %%'
bind-key x kill-pane
bind-key X kill-window
bind-key q confirm-before kill-session
bind-key Q confirm-before kill-server
bind-key , previous-window # <
bind-key . next-window # >
bind-key < swap-window -t :-
bind-key > swap-window -t :+
bind-key BSpace switch-client -l
bind-key c new-window -c '#{pane_current_path}'
bind-key % split-window -c '#{pane_current_path}' -h
# vi mode
# bind-key -t vi-copy 'v' begin-selection
# bind-key -t vi-copy 'y' copy-selection
# Smart pane switching with awareness of vim splits
is_vim='echo "#{pane_current_command}" | egrep -iq "(^|\/)g?(view|n?vim?)(diff)?$"'
bind -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L"
bind -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D"
bind -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U"
bind -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R"
bind -n C-\\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l"
# Specify bind key for remote (nested) tmux session
# Now to detach a nested session, it's just "C-r d"
# Thanks to jasonwryan in this SO answer http://unix.stackexchange.com/a/130732
bind -n C-b if-shell "$is_vim" "send-keys C-b" "send-prefix"
# Bring back clear screen under tmux prefix
bind C-l send-keys 'C-l'
# Bring back kill line under tmux prefix
bind C-k send-keys 'C-k'
bind-key n command-prompt 'rename-window "%%"'
bind-key N command-prompt 'rename-session "%%"'
bind-key Escape copy-mode -u
bind-key Up copy-mode -u
bind-key r source-file $HOME/.tmux.conf\; display "The matrix has been reloaded"
bind-key R refresh-client
bind-key a send-key C-a
# -r: can be repeated without pressing prefix# again (501ms after last '-r' action or prefix)
bind-key -r h select-pane -t :.-
bind-key -r l select-pane -t :.+
# Send keys to all panes in current window
bind-key y setw synchronize-panes
set -g history-limit 10000
set -g escape-time 0
## messages
# set-option -g quiet
set-option -g message-style fg=colour0,bg=colour4
set-option -g display-time 5000
## set status bar
set-option -g status-interval 1
set-option -g status-style fg=colour10,bg=default
set-option -g status-left-style fg=default,bg=default
set-option -g status-right-style bg=default
bind-key / set-option status
# "I' == current window index
# 'H' == Hostname
# 'F' == current window flag
# 'P' == current pane index
# 'S' == Session name
# 'T' == current window title
# 'W' == current window name
# '#' == a literal "#"
# Where appropriate, special character sequences may be prefixed with a
# number to specify the maximum length, in this line "#10W'.
set -g status-left ""
set-option -g status-right '#[fg=yellow]#S#[fg=default] [#I:#P] /// #(tmux-mem) /// #[fg=default]%a %d %b %H:%M'
set-option -g status-right-length 100
set-option -g status-left-length 120
## highlight active window
set-window-option -g window-status-current-style fg=colour11,bg=default,bold
set-window-option -g window-status-current-format '[ #I #W ]'
set-window-option -g window-status-bell-style fg=colour226,bg=colour23
# renumber windows
# set-option -g renumber-windows on
# starts windows at 1 not 0
set-option -g base-index 1
set-option -g visual-activity off
set-option -g set-titles on
set-option -gw automatic-rename on
set-option -gw monitor-activity off
set-window-option -g window-status-format ' #I #W '
set-window-option -g window-status-style dim
# Toggle mouse on
bind m \
set -g mode-mouse on \;\
set -g mouse-resize-pane on \;\
set -g mouse-select-pane on \;\
set -g mouse-select-window on \;\
display 'Mouse: ON'
# Toggle mouse off
bind M \
set -g mode-mouse off \;\
set -g mouse-resize-pane off \;\
set -g mouse-select-pane off \;\
set -g mouse-select-window off \;\
display 'Mouse: OFF'
## pane border and colors
set-option -g pane-active-border-style fg=colour4,bg=default
## chooser colors
set-window-option -g mode-style bg=colour5,fg=black
### Copy/paste
#unbind -t vi-copy Enter
#bind-key -t vi-copy Enter copy-pipe 'reattach-to-user-namespace pbcopy'
#set-option -g default-command "reattach-to-user-namespace -l zsh; tmux rename-window zsh"
### Reattaching to the proper user namespace when tmux is launched.
set -g default-command "safe-reattach-to-user-namespace -l /bin/zsh"
# vim: set ft=tmux: