-
Notifications
You must be signed in to change notification settings - Fork 1
/
.tmux.conf
162 lines (118 loc) · 3.73 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
###########
# PLUGINS #
###########
set -g @plugin 'tmux-plugins/tpm'
set -g @resurrect-strategy-vim 'session'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @pomodoro_notifications 'on'
set -g @plugin 'olimorris/tmux-pomodoro-plus'
###########
# SETTING #
###########
# prefix is alt-x
# set-option -g prefix M-x
# prefix is alt-m
set-option -g prefix M-Tab
bind-key -n C-Tab send-prefix
# no automatic title
set-option -g allow-rename off
# Use the session name for the shell title
set-option -g set-titles on
# use classic shortcut
set-window-option -g xterm-keys on
# Make Focus events work in vim
set -g focus-events on
# Set copy-mode to something more comfortable
bind - copy-mode
# default shell
set-option -g default-shell /bin/zsh
# history size
set-option -g history-limit 8000
# reload config
bind r source-file ~/.tmux.conf \; display-message "Config reloaded..."
# resize pane
bind H resize-pane -L 10
bind J resize-pane -D 5
bind K resize-pane -U 5
bind L resize-pane -R 10
# reset layout
bind y run-shell "~/.config/tmux/tmux-layout-dwindle"
# Allows for faster key repetition
set -s escape-time 0
# Activity monitoring
setw -g monitor-activity on
set -g visual-activity on
# fix for ctrl-l
# Stay quiet
set-option -g visual-activity off
set-option -g visual-bell off
set-option -g visual-silence off
set-window-option -g monitor-activity off
set-option -g bell-action none
# lock session/client
set -g lock-command vlock
##############
# Navigation #
##############
# fzf session
bind S new-window -n "session-switcher" "tmux list-sessions | sed -E 's/:.*$//' | grep -v \"^$(tmux display-message -p '#S')\$\" | fzf --reverse | xargs tmux switch-client -t"
# client
bind P switch-client -p
bind N switch-client -n
# Move vim-like
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
bind o resize-pane -Z
# switch to last used tab
bind tab last-window
#
bind u select-layout main-vertical
bind i select-layout main-horizontal
#########
# Panes #
#########
bind \\ split-window -v -c "#{pane_current_path}"
bind | split-window -h -c "#{pane_current_path}"
# Start numbering at 1
set -g base-index 1
# go to current dir
bind g attach -c "#{pane_current_path}"
#########
# Mouse #
#########
set-option -g mouse on
set-option -g focus-events on
set-option -g allow-passthrough on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'"
bind -n WheelDownPane select-pane -t= \; send-keys -M
# Use vim bindings in copy mode
setw -g mode-keys vi
# SELECT
if-shell "[[ `tmux -V | cut -d' ' -f2` -lt 2.4 ]]" \
"bind-key Escape copy-mode; \
bind-key -t vi-copy Escape cancel; \
bind-key p paste-buffer; \
bind-key -t vi-copy v begin-selection; \
bind-key -t vi-copy V select-line; \
bind-key -t vi-copy r rectangle-toggle; \
bind-key -t vi-copy WheelUpPane scroll-up; \
bind-key -t vi-copy WheelDownPane scroll-down; \
bind -t vi-copy y copy-pipe 'xsel --input --clipboard'"
if-shell "[[ `tmux -V | cut -d' ' -f2` -ge 2.4 ]]" \
"bind-key -T copy-mode-vi 'v' send -X begin-selection; \
bind-key -T copy-mode-vi 'V' send -X select-line; \
bind-key -T copy-mode-vi 'r' send -X rectangle-toggle; \
bind-key -T copy-mode-v WheelUpPane send -X scroll-up; \
bind-key -T copy-mode-v WheelDownPane send -X scroll-down; \
bind-key -T copy-mode-vi 'y' send -X copy-pipe-and-cancel 'xsel --input --clipboard'"
######################
### DESIGN CHANGES ###
######################
set -g default-terminal "xterm-256color"
source-file ~/.config/tmux/layout.conf
######## personal conf
if-shell "test -f ~/.tmux.postconf" "source-file ~/.tmux.postconf"
######## plugins init
run '~/.tmux/plugins/tpm/tpm'