-
Notifications
You must be signed in to change notification settings - Fork 5
/
tmux.conf
102 lines (83 loc) · 3.14 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
# general options
set-window-option -g mode-keys vi
set-option -g base-index 1
set-window-option -g pane-base-index 1
set-option -g renumber-windows on
if-shell -F '[[ "$COLORTERM" == "truecolor" ]]' \
'set-option -sa terminal-overrides ",*:Tc"'
# remap prefix from 'C-b' to 'C-a'
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
# non-login shell
set-option -g default-command $SHELL
# mouse
set-option -g mouse on
bind-key -n MouseDrag1Status swap-window -d -t=
tmux_commands_with_legacy_scroll="nano less man git"
bind-key -T root WheelUpPane \
if-shell -Ft= '#{?mouse_any_flag,1,#{pane_in_mode}}' \
'send -Mt=' \
'if-shell -t= "#{?alternate_on,true,false} || echo \"#{tmux_commands_with_legacy_scroll}\" | grep -q \"#{pane_current_command}\"" \
"send -t= Up Up Up" "copy-mode -et="'
bind-key -T root WheelDownPane \
if-shell -Ft = '#{?pane_in_mode,1,#{mouse_any_flag}}' \
'send -Mt=' \
'if-shell -t= "#{?alternate_on,true,false} || echo \"#{tmux_commands_with_legacy_scroll}\" | grep -q \"#{pane_current_command}\"" \
"send -t= Down Down Down" "send -Mt="'
# When a smaller terminal connects to a tmux client, it shrinks to fit it. The
# clients attached with bigger displays see this constrained view.
# aggressive-resize makes it such that the window is only resized if the smaller
# client is actively looking at it.
setw -g aggressive-resize on
# hjkl, vim movements
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# ctrl plus left and right arrows switch windows
bind -n C-Left prev
bind -n C-Right next
# ctrl-shift left/right move windows
bind -n C-S-Left swap-window -d -t -1
bind -n C-S-Right swap-window -d -t +1
# splits
unbind %
bind | split-window -h -c '#{pane_current_path}'
bind - split-window -v -c '#{pane_current_path}'
# Copy
set -s set-clipboard on
bind-key -T copy-mode-vi _ send-keys -X start-of-line
bind-key -T copy-mode-vi v send-keys -X begin-selection
# Status Bar & styling
set -g status-justify left
set -g status-interval 1
set -g status-left-length 40
set -g status-right-length 40
set -g status-left ""
set -g status-right " %d.%m. #[bright]%H:%M:%S#[default] "
set -g status-style fg=colour237,bg=colour65
set -g message-command-style fg=colour7,bg=colour65
set -g message-style fg=colour7,bg=colour65
set -g mode-style fg=colour7,bg=colour65
set -g window-status-separator ""
setw -g window-status-format " #I:#W "
setw -g window-status-current-style bg=colour10,bold
setw -g window-status-current-format " #I:#W "
set -g pane-border-style bg=terminal,fg=colour65
set -g pane-active-border-style bg=terminal,fg=colour10
# tmux window titles for X
set -g set-titles on
set -g set-titles-string "#W [#S:#I.#P]"
# quick view of processes
bind a split-window "exec htop"
# pass
bind-key C-p command-prompt "split-window 'exec pass %% | less -R'"
# Plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-yank'
# Plugin configuration
set -g @yank_action 'copy-pipe'
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'