-
Notifications
You must be signed in to change notification settings - Fork 0
/
tmux.conf
94 lines (74 loc) · 3.56 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
set -g @plugin 'tmux-plugins/tmux-resurrect'
# Make it use C-a, similar to screen.
unbind-key C-b
unbind-key l
set -g prefix C-a
#Allow quick toggling to last window used
bind-key C-a last-window
# Terminal overrides for truecolor and Shit+Page{Up/Down} for navigating history
set -g default-terminal "tmux-256color"
set-option -ga terminal-overrides ",xterm*:Tc:smcup@:rmcup@"
set-option -ga terminal-overrides ",screen*:Tc:smcup@:rmcup@"
set-option -ga terminal-overrides ",tmux*:Tc:smcup@:rmcup@"
#Removes the delay when ESC is pressed
set -sg escape-time 0
#Keep readline bindings
set-window-option -g xterm-keys on
#Sane action for mouse scroll
set -g mouse off
# Force rendering of vertical lines as solid
set -as terminal-overrides ",*:U8=0"
#Open a new session if none exists
new-session
# use hjkl for moving
# and HJKL for resizing
setw -g mode-keys vi
bind h run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|/)vim$|(^|/)vimdiff$|(^|/)git$' && tmux send-keys C-a h) || tmux select-pane -L"
bind j run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|/)vim$|(^|/)vimdiff$|(^|/)git$' && tmux send-keys C-a j) || tmux select-pane -D"
bind k run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|/)vim$|(^|/)vimdiff$|(^|/)git$' && tmux send-keys C-a k) || tmux select-pane -U"
bind l run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|/)vim$|(^|/)vimdiff$|(^|/)git$' && tmux send-keys C-a l) || tmux select-pane -R"
bind \ run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|/)vim$|(^|/)vimdiff$|(^|/)git$' && tmux send-keys C-a \) || tmux select-pane -l"
# act even more like vim when in select mode
setw -g mode-keys vi
bind-key -T copy-mode-vi 'v' send -X begin-selection # Begin selection in copy mode.
bind-key -T copy-mode-vi 'y' send -X copy-selection-and-cancel # Yank selection in copy mode.
# Move through windows with vim bindings
bind-key -r C-h select-window -t :-
bind-key -r C-l select-window -t :+
# Resize panes with vim bindings
bind-key -r H resize-pane -L 5
bind-key -r J resize-pane -D 5
bind-key -r K resize-pane -U 5
bind-key -r L resize-pane -R 5
# disable moving around the panes with the arrows
unbind-key Up
unbind-key Down
unbind-key Left
unbind-key Right
# Start in new panes in the same directory
bind-key '"' split-window -c "#{pane_current_path}"
bind-key % split-window -h -c "#{pane_current_path}"
# start window numbering at 1 for easier switching
set -g base-index 1
setw -g pane-base-index 1
# Longer timeout to select pane to use
set display-panes-time 2000 #2s
# To make sure vim gets events
set -g focus-events on
# Statusline settings
set -g status-style fg=white
set -g status-style bg=#282a36
set -g window-status-activity-style bold
set -g pane-border-style fg=colour245
set -g pane-active-border-style fg=colour39
set -g message-style fg=colour16
set -g message-style fg=colour221
set -g status-left-length 32
set -g status-right-length 150
set -g status-interval 5
set -g status-left '#[fg=colour16,bg=colour254,bold] #{host_short} #[fg=colour254,bg=colour238,nobold]#[fg=colour15,bg=colour238,bold] #{session_name} #[fg=colour238,bg=colour234,nobold]'
set -g status-right "#[fg=white]| %A | %d %b %Y | %H:%M "
set -g window-status-format "#[fg=white,nobold] #{window_index} #{window_name} #{?window_last_flag,-,}"
set -g window-status-current-format "#[fg=colour16,bg=colour39,noreverse,bold] #{window_index} #{window_name} #{?window_zoomed_flag,Z, }"
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'