-
Notifications
You must be signed in to change notification settings - Fork 0
/
tmux.conf
163 lines (130 loc) · 5.78 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
# tmux settings
# http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/tmux.1#x4f5054494f4e53
# ----------------------------------------------------------------------
# | General Settings |
# ----------------------------------------------------------------------
# Make window index start at 1
set -g base-index 1
# Make pane index start at 1
setw -g pane-base-index 1
# Rename window to reflect current program
setw -g automatic-rename on
# Remove delay when sending commands
# (default is 500 milliseconds)
set -sg escape-time 1
# ----------------------------------------------------------------------
# | Key Mappings |
# ----------------------------------------------------------------------
# Change the key combination for the PREFIX key to `ctrl-Space`
unbind-key C-b
set -g prefix C-Space
# Make tmux send the PREFIX to an application running
# within tmux simply by pressing PREFIX key twice
bind C-Space send-prefix
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Use vim keybindings in copy mode
setw -g mode-keys vi
# Remap the copy & paste keys to work as in vim
unbind [
bind Escape copy-mode
unbind p
bind p paste-buffer
bind-key -T copy-mode-vi 'v' send-keys -X begin-selection
bind-key -T copy-mode-vi 'y' send-keys -X copy-selection
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# [ PREFIX + - ] Split window horizontally
bind - split-window -vb
# [ PREFIX + | ] Split window vertically
bind | split-window -hb
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# [ PREFIX + h/j/k/l ] Move from pane to pane
# 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
# # See: https://github.com/christoomey/vim-tmux-navigator
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h' 'select-pane -L'
bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j' 'select-pane -D'
bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k' 'select-pane -U'
bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l' 'select-pane -R'
tmux_version='$(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p")'
if-shell -b '[ "$(echo "$tmux_version < 3.0" | bc)" = 1 ]' \
"bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\' 'select-pane -l'"
if-shell -b '[ "$(echo "$tmux_version >= 3.0" | bc)" = 1 ]' \
"bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\\\' 'select-pane -l'"
bind-key -T copy-mode-vi 'C-h' select-pane -L
bind-key -T copy-mode-vi 'C-j' select-pane -D
bind-key -T copy-mode-vi 'C-k' select-pane -U
bind-key -T copy-mode-vi 'C-l' select-pane -R
bind-key -T copy-mode-vi 'C-\' select-pane -l
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Resize
bind -r f resize-pane -Z
# [ PREFIX + H/J/K/L ] Resize pane
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5
# [ PREFIX + r ] Reload tmux config
bind r source-file ~/.tmux.conf \; display "tmux configs reloaded"
# ----------------------------------------------------------------------
# | Status bar |
# ----------------------------------------------------------------------
# Notified when something happens in one of the other windows
# setw -g monitor-activity on
# set -g visual-activity on
# Show tail of the path as windows name
#set-option -g automatic-rename off
#setw -g allow-rename off
set-option -g renumber-windows on
set-option -g automatic-rename-format '#{b:pane_current_path}'
#jwindow titles
# set-window-option -g window-status-current-format ' #[fg=white,bold]** #[fg=white,bold][#{window_index}] #[fg=white]#{pane_current_command} #[fg=white]#(pwd="#{pane_current_path}"; echo ${pwd####*/}) #[fg=white]**'
# set-window-option -g window-status-format '#[fg=colour244,bold][#{window_index}] #[fg=colour244]#{pane_current_command} #[fg=colour244]#(pwd="#{pane_current_path}"; echo ${pwd####*/})'
# Window status
# set -g window-status-format " #I: #{pane_current_command} [#{b:pane_current_path}] "
# set -g window-status-current-format "#[fg=colour233,bg=black]#[fg=colour190,nobold] #I: #{pane_current_command} [#{b:pane_current_path}] #[fg=colour233,bg=black,nobold]"
# Periodically refresh the status bar
set -g status-interval 2
# Customize what is displayed
set -g status-justify left
set -g status-left-length 50
set -g status-left " #S / "
# └─ current session name
set -g status-right " %R "
# └─ current time
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Default colors
#set -g status-bg green
#set -g status-fg black
#
## Colors for window list
#setw -g window-status-fg black
#setw -g window-status-bg green
#setw -g window-status-attr dim
#
## Colors for active window
#setw -g window-status-current-fg black
#setw -g window-status-current-bg yellow
#setw -g window-status-current-attr dim
# ----------------------------------------------------------------------
# | Visual Styling |
# ----------------------------------------------------------------------
# Display things in 256 colors
set -g default-terminal "screen-256color"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Command Line
#set -g message-fg black
#set -g message-bg green
#set -g message-attr dim
#
## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#
## Pane divider
#set -g pane-active-border-bg default
#set -g pane-active-border-fg green
#set -g pane-border-bg default
#set -g pane-border-fg colour244