-
Notifications
You must be signed in to change notification settings - Fork 0
/
.tmux.conf
216 lines (176 loc) · 8.03 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
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
#set-option -g renumber-windows on
# use UTF8
unbind =
bind = \
new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \;\
swap-pane -s tmux-zoom.0 \;\
select-window -t tmux-zoom
unbind +
bind + \
last-window \;\
swap-pane -s tmux-zoom.0 \;\
kill-window -t tmux-zoom
set -g utf8
set-window-option -g utf8 on
set-option -g renumber-windows on
# display windows directory
#setw -g window-status-format "#{pane_current_path}"
#setw -g window-status-current-format "#{pane_current_path}"
# make tmux display things in 256 colors
set -g default-terminal "screen-256color"
# set scrollback history to 10000 (10k)
set -g history-limit 10000
#Tmuxline load
#source /Users/aweisberg/Documents/snapshot.conf
# set Ctrl-a as the default prefix key combination
# and unbind C-b to free it up
set -g prefix C-a
unbind C-b
# use send-prefix to pass C-a through to application
bind C-a send-prefix
# shorten command delay
set -sg escape-time 1
# set window and pane index to 1 (0 by default)
set-option -g base-index 1
setw -g pane-base-index 1
# reload ~/.tmux.conf using PREFIX r
bind r source-file ~/.tmux.conf \; display "Reloaded!"
# use PREFIX | to split window horizontally and PREFIX - to split vertically
bind \ split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
bind v split-window -h -c "#{pane_current_path}" \; select-pane -L
bind m split-window -v -c "#{pane_current_path}" \; resize-pane -y 15
#join pane/window
bind-key _ choose-window 'join-pane -v -s ":%%"'
bind-key | choose-window 'join-pane -h -s ":%%"'
bind q killp
bind x kill-pane
bind K confirm kill-server
bind c new-window -c "#{pane_current_path}"
#pane zooming
bind i resize-pane -Z
# Make the current window the first window
bind T swap-window -t 1
# map Vi movement keys as pane movement keys
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Smart pane switching with awareness of vim splits
is_vim='echo "#{pane_current_command}" | grep -iqE "(^|\/)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"
# and use C-h and C-l to cycle thru panes
bind -r C-h select-window -t :-
bind -r C-l select-window -t :+
# resize panes using PREFIX H, J, K, L
bind H resize-pane -L 25
bind J resize-pane -D 25
bind K resize-pane -U 25
bind L resize-pane -R 25
# explicitly enable mouse control
set -g mouse on
# move tabs
bind-key Left swap-window -t -1
bind-key Right swap-window -t +1
#---------------------
# Copy & Paste
# ---------------------
# provide access to the clipboard for pbpaste, pbcopy
set-window-option -g automatic-rename on
# use vim keybindings in copy mode
setw -g mode-keys vi
set -g focus-events on
# setup 'v' to begin selection as in Vim
bind-key -t vi-copy v begin-selection
bind-key -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy"
# update default binding of 'Enter' to also use copy-pipe
unbind -t vi-copy Enter
bind-key -t vi-copy Enter copy-pipe "reattach-to-user-namespace pbcopy"
bind y run 'tmux save-buffer - | reattach-to-user-namespace pbcopy '
bind C-y run 'tmux save-buffer - | reattach-to-user-namespace pbcopy '
bind t command-prompt -p command: "new-window; send-keys %1 KPEnter"
# ----------------------
# set some pretty colors
# ----------------------
# set pane colors - hilight the active pane
set-option -g pane-border-fg colour235 #base02
set-option -g pane-active-border-fg colour240 #base01
# colorize messages in the command line
set-option -g message-bg black #base02
set-option -g message-fg brightred #orange
# ----------------------
# Status Bar
# -----------------------
set-option -g status on # turn the status bar on
set -g status-utf8 on # set utf-8 for the status bar
set -g status-interval 5 # set update frequencey (default 15 seconds)
#set -g status-justify centre # center window list for clarity
set-option -g status-position top # position the status bar at top of screen
# visual notification of activity in other windows
setw -g monitor-activity on
set -g visual-activity on
# set color for status bar
#set-option -g status-bg colour235 #base02
#set-option -g status-fg yellow #yellow
#set-option -g status-attr dim
# set window list colors - red for active and cyan for inactive
#set-window-option -g window-status-fg brightblue #base0
#set-window-option -g window-status-bg colour236
#set-window-option -g window-status-attr dim
#set-window-option -g window-status-current-fg brightred #orange
#set-window-option -g window-status-current-bg green
#set-window-option -g window-status-current-bg colour236
#set-window-option -g window-status-current-attr bright
# show session name, window & pane number, date and time on right side of
# status bar
set -g status-right-length 60
#set -g status-right " #[fg=blue]#S #I:#P #[fg=yellow]:: %d %b %Y #[fg=green]:: %l:%M %p "
# This tmux statusbar config was created by tmuxline.vim
# on Fri, 10 Oct 2014
#
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'https://github.com/tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-sidebar'
set -g @plugin 'tmux-plugins/tmux-online-status'
set -g @plugin 'tmux-plugins/tmux-battery'
set -g @plugin 'tmux-plugins/tmux-open'
set -g @plugin 'jbnicolai/tmux-fpp'
set -g @plugin 'tmux-plugins/tmux-cpu'
set -g @plugin 'erikw/tmux-powerline'
# Battery Icons
set -g @batt_charged_icon "#[fg=brightgreen]✓#[default]"
set -g @batt_charging_icon "#[fg=brightyellow]⚡︎#[default]"
set -g @batt_discharging_icon "#[fg=brightred]✕#[default]"
#set -g @batt_discharging_icon "#[fg=brightyellow]⚠︎ #[default]"
set -g status-interval 5
set -g status-justify "left"
set -g status "on"
set -g status-left-style "none"
set -g message-command-style "fg=colour252,bg=colour240"
set -g status-right-style "none"
set -g pane-active-border-style "fg=colour119"
set -g status-utf8 "on"
set -g status-style "bg=colour238,none"
set -g message-style "fg=colour252,bg=colour240"
set -g pane-border-style "fg=colour240"
set -g status-right-length "100"
set -g status-left-length "100"
setw -g window-status-activity-style "fg=colour248,bg=colour238,nounderscore"
setw -g window-status-separator ""
setw -g window-status-style "fg=colour248,bg=colour238,none"
set -g status-left "#[fg=colour238,bg=colour119] #S #(uptime | cud -d \" \" -f 1,2,3)"
set -g status-right "CPU: #{cpu_icon} #{cpu_percentage} | Batt: #{battery_icon} #{battery_percentage} #{battery_remain} | Online: #{online_status} | %a %h %d | %I:%M %t"
setw -g window-status-format "#[fg=colour238,bg=colour238,nobold,nounderscore,noitalics]#[default] #I > #W #[fg=colour238,bg=colour238,nobold,nounderscore,noitalics]"
setw -g window-status-current-format "#[fg=colour238,bg=colour240,nobold,nounderscore,noitalics]#[fg=colour252,bg=colour240] #I > #W > #F #[fg=colour240,bg=colour238,nobold,nounderscore,noitalics]"
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
if '[[ $TMUX =~ tmate ]]' 'source ~/.tmate.conf'
set-option -g default-shell $SHELL
set-option -g default-command "reattach-to-user-namespace -l fish"