summaryrefslogtreecommitdiff
path: root/dot/tmux.stage2.conf
blob: 655dc7523080d1f4cf29ac1d853e2b4b68750e3c (plain)
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
# disable a dubious "feature" where remotely logging in and attaching to the
# existing session causes tmux to remove the $DISPLAY variable from future new
# windows (even after the remote user is no longer attached!)
set -g update-environment ""

# use UTF8
set -q -g utf8
set-window-option -q -g utf8 on

# make tmux display things in 256 colors
#set -g default-terminal "screen-256color"

unbind C-b
set -g prefix C-z
bind z send-prefix

# this is the best way to reorder windows
bind-key -n C-S-Left swap-window -t -1
bind-key -n C-S-Right swap-window -t +1

# redundantly bind some frequent commands so that the Control key does not have to be released
bind-key C-n next-window
bind-key Space next-window
bind-key C-Space next-window
bind-key C-p previous-window
bind-key C-z last-window
bind-key C-c new-window

# Use vi-like keys to do selection and copying. Ctrl-A Escape starts copy mode, 
# 'v' starts text selection and 'y' copies (yanks).
bind-key Escape copy-mode
bind-key [ copy-mode
bind-key C-[ copy-mode
# https://github.com/tmux/tmux/issues/754
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-selection
bind-key -T copy-mode-vi Enter send-keys -X copy-selection
#bind-key C-y run "tmux save-buffer - | xclip -i -selection clipboard"
#bind-key C-p run "tmux set-buffer \"$(xclip -o -selection clipboard)\"; tmux paste-buffer"

# TODO: get more from https://github.com/aaronbieber/dotfiles/blob/master/configs/tmux.conf

# 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

# use PREFIX | to split window horizontally and PREFIX - to split vertically
bind | split-window -h
bind - split-window -v

# 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

# 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 5
bind J resize-pane -D 5
bind K resize-pane -U 5
bind L resize-pane -R 5

# C-i for even-vertical arrangement and C-o to zoom current pane
#bind-key C-i select-layout even-vertical
#bind-key C-v select-layout even-horizontal
#bind-key C-o resize-pane -y 1000

# Sync panes
#bind C-s set-window-option synchronize-panes

# explicitly disable mouse control
#setw -g mode-mouse off
#set -g mouse-select-pane off
#set -g mouse-resize-pane off
#set -g mouse-select-window off

# ---------------------
# Copy & Paste
# ---------------------
# provide access to the clipboard for pbpaste, pbcopy
#set-option -g default-command "reattach-to-user-namespace -l zsh"
#set-window-option -g automatic-rename on

# use vim keybindings in copy mode
setw -g mode-keys vi

# 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 '

# Save entire tmux history to a file - file will be on machine where tmux is
# running
#bind-key * command-prompt -p 'save history to filename:' -I '~/tmux.history' 'capture-pane -S -32768 ; save-buffer %1 ; delete-buffer'

# -----------------------
# Multistart panes
# ----------------------
#bind-key P run-shell 'tmux-multistart as'
#bind-key A run-shell 'tmux-multistart alpha'
#bind-key B run-shell 'tmux-multistart beta'
#bind-key W run-shell 'tmux-multistart web'
#bind-key D run-shell 'tmux-multistart dev'
#bind-key T run-shell 'tmux-multistart txhub'

#bind-key C command-prompt -p "machine(s)/group: " "run-shell 'tmux-multistart %1'"

# ----------------------
# 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 colour33 #blue
#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 colour236 
#set-window-option -g window-status-current-attr bright

# show host name and IP address on left side of status bar
#set -g status-left-length 85 
#set -g status-left "#[fg=green]: #h : #[fg=brightblue]#(dig +short myip.opendns.com @resolver1.opendns.com) #[fg=yellow]#(ifconfig en0 | grep 'inet ' | awk '{print \"en0 \" $2}') #(ifconfig en1 | grep 'inet ' | awk '{print \"en1 \" $2}') #(ifconfig en3 | grep 'inet ' | awk '{print \"en3 \" $2}') #[fg=red]#(ifconfig tun0 | grep 'inet ' | awk '{print \"vpn \" $2}') #[fg=green]#(/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I | awk -F': ' '/ SSID/{print $2}') "

# 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 : #(date -u | awk '{print $4}') :"