forked from justone/dotfiles
-
Notifications
You must be signed in to change notification settings - Fork 2
/
.tmux.conf
153 lines (118 loc) · 6.13 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
# Smart pane switching with awareness of vim splits
# See: https://github.com/christoomey/vim-tmux-navigator
bind -n C-h run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-h) || tmux select-pane -L"
bind -n C-j run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-j) || tmux select-pane -D"
bind -n C-k run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-k) || tmux select-pane -U"
bind -n C-l run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-l) || tmux select-pane -R"
bind -n C-\ run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys 'C-\\') || tmux select-pane -l"
bind -T copy-mode-vi C-h run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-h) || tmux select-pane -L"
bind -T copy-mode-vi C-j run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-j) || tmux select-pane -D"
bind -T copy-mode-vi C-k run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-k) || tmux select-pane -U"
bind -T copy-mode-vi C-l run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-l) || tmux select-pane -R"
bind -T copy-mode-vi C-\ run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys 'C-\\') || tmux select-pane -l"
# Set that stupid Esc-Wait off, so VI works again
set-option -sg escape-time 10
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Keybinds
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Set the prefix to Ctrl-a
bind C-a send-prefix
set-option -g prefix C-a
unbind-key C-b
# Window Navigation
bind-key C-w last-window
bind-key C-p previous-window
bind-key C-n next-window
# Pane resizing
bind-key -r C-h resize-pane -L 5
bind-key -r C-j resize-pane -D 5
bind-key -r C-k resize-pane -U 5
bind-key -r C-l resize-pane -R 5
# toggle syncing of input to all panes of current window
bind-key e setw synchronize-panes
# Moving windows left and right
bind-key -r > swap-window -t :+
bind-key -r < swap-window -t :-
# Reload source file
bind r source-file ~/.tmux.conf \; display-message "Configuration reloaded"
#Change pane splitting
bind | split-window -h -c '#{pane_current_path}'
bind - split-window -v -c '#{pane_current_path}'
# open a man page in new pane or window
bind C-m command-prompt -p "Man page:" "new-window -n 'man %1' 'exec bash -c \"source ~/.bashrc; man %1\"'"
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# vi-like copy mode
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
set-window-option -g mode-keys vi
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 Y send-keys -X copy-pipe-and-cancel "ssh macbook pbcopy"
bind-key -T copy-mode-vi Escape send-keys -X cancel
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Window & Pane Look & Feel
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
set -g default-terminal "screen-256color"
set-option -g display-panes-time 1500
set-option -g history-limit 10000
# alarm message display settings
set-option -g visual-bell on
# Keep tmux messages around longer
set-option -g display-time 3000
set-option -g message-style 'bg=red,fg=brightwhite'
set-option -g mouse on
# text colors
set -g window-style 'fg=colour246'
set -g window-active-style 'fg=colour253'
# pane border colors
set -g pane-border-style 'fg=colour26'
set -g pane-active-border-style 'fg=colour208,bg=default'
set-window-option -g mode-style "bg=colour208,fg=brightwhite"
# window and pane numbering should start from one, not zero
set-option -g renumber-windows on
set-option -g base-index 1
set-option -g pane-base-index 1
# window title is pane executable if there is no explicit window title
set-option -g set-titles on
set-option -g set-titles-string '#{pane_title}'
# Pane Titles
BLINK_ON_SYNC="#{?pane_synchronized,#[blink]#[bg=red]██,}"
RED_AFTER_PREFIX="#{?client_prefix,#[fg=red],}"
REVERSE_COLOR_IF_PANE_ACTIVE="#{?pane_active,#[reverse],}"
ZOOM_INDICATOR="#{?window_zoomed_flag, #[bg=green]#[fg=black] ZOOMED ,}"
# set-option -g pane-border-status top
# set-option -g pane-border-format "$BLINK_ON_SYNC$REVERSE_COLOR_IF_PANE_ACTIVE$RED_AFTER_PREFIX #{pane_current_command} #[default] #{pane_current_path} #[default]$BLINK_ON_SYNC$ZOOM_INDICATOR"
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Statusbar Style
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
set-option -g status-interval 2
# set-option -g status-left-length 0
# set-option -g status-left "#[bg=blue]#[fg=brightwhite]#(echo -n `hostname`): #(wemux status_users)#[default] "
#set-option -g status-right-length 76
set-option -g status-right '#(date) #{prefix_highlight}'
set-option -g status-style 'fg=colour14,bg=default'
# Window list
set-option -g status-justify left
set-window-option -g window-status-style "bg=colour4"
set-window-option -g window-status-current-style "fg=white,bg=colour208"
set-window-option -g window-status-current-attr "bold"
WINDOW_TAB_FORMAT="#{window_index}: #{window_name}#{window_flags}#[fg=white]#(~/utilities/get-working-copy-dir.sh #{window_index})#[default]"
set-window-option -g window-status-format " $WINDOW_TAB_FORMAT "
set-window-option -g window-status-current-format "#[bold]$BLINK_ON_SYNC $WINDOW_TAB_FORMAT#[default]$BLINK_ON_SYNC #[default]"
set-window-option -g window-status-separator " "
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Tmux Plugin Manager
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @plugin 'tmux-plugins/tmux-prefix-highlight'
set -g @plugin 'nhdaly/tmux-scroll-copy-mode'
set -g @plugin 'christoomey/vim-tmux-navigator'
set -g @emulate-scroll-for-no-mouse-alternate-buffer 'off'
set -g @scroll-without-changing-pane 'on'
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
if "test ! -d ~/.tmux/plugins/tpm" \
"run 'git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm && ~/.tmux/plugins/tpm/bin/install_plugins'"
run '~/.tmux/plugins/tpm/tpm'