-
Notifications
You must be signed in to change notification settings - Fork 0
/
dot_tmux.conf.tmpl
234 lines (191 loc) · 8.29 KB
/
dot_tmux.conf.tmpl
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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
# shell
{{- if eq .chezmoi.os "darwin" }}
set -g default-shell /usr/local/bin/zsh
{{ else if eq .chezmoi.os "linux" }}
set -g default-shell /bin/zsh
{{ end -}}
# ================================ TPM =================================
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @resurrect-save C-b
set -g @resurrect-restore C-r
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-save-interval '15'
set -g @plugin 'tmux-plugins/tmux-open'
set -g @open-editor 'C-x'
set -g @plugin 'tmux-plugins/tmux-copycat'
# prefix + ctrl-f - simple file search
# prefix + ctrl-g - jumping over git status files (best used after git status command)
# prefix + alt-h - jumping over SHA-1/SHA-256 hashes (best used after git log command)
# prefix + ctrl-u - url search (http, ftp and git urls)
# prefix + ctrl-d - number search (emonic d, as digit)
# prefix + alt-i - ip address search)
# n - jumps to the next match
# N - jumps to the previous match
# To copy a highlighted match:
# Enter - if you're using Tmux vi mode
# ctrl-w or alt-w - if you're using Tmux emacs mode
set -g @plugin 'tmux-plugins/tmux-prefix-highlight'
# set -ag status-right '#{prefix_highlight}'
set -g @prefix_highlight_empty_has_affixes 'on' # default is 'off'
set -g @prefix_highlight_output_prefix ''
set -g @prefix_highlight_output_suffix ''
set -g @prefix_highlight_prefix_prompt ''
set -g @prefix_highlight_copy_prompt 'Copy'
set -g @prefix_highlight_sync_prompt 'Sync'
set -g @prefix_highlight_empty_prompt ' '
set -g @prefix_highlight_empty_attr 'fg=default,bg=#3560a0'
set -g @prefix_highlight_fg 'colour011' # default is 'colour231'
set -g @prefix_highlight_bg 'colour196' # default is 'colour04'
# default binding: prefix + f
set -g @plugin 'jbnicolai/tmux-fpp'
set -g @plugin 'fcsonline/tmux-thumbs'
set -g @thumbs-key F
set -g @thumbs-command 'printf "%s" "{}" | pbcopy'
set -g @thumbs-reverse true
set -g @plugin 'wfxr/tmux-fzf-url'
# set -g @fzf-url-bind 'v'
set -g @plugin 'junegunn/tmux-fzf-maccy'
# Bind-key (default: '@')
set -g @fzf-maccy-bind '@'
# fzf-tmux layout (default: '-p70%' on tmux 3.2, '-d' otherwise)
# (-p requires tmux 3.2 or above, see `man fzf-tmux` for available options)
set -g @fzf-maccy-layout '-p70%'
set -g @plugin 'roy2220/easyjump.tmux'
# defaults:
set -g @easyjump-key-binding 'g'
set -g @easyjump-label-chars 'fjdkslaghrueiwoqptyvncmxzb1234567890'
set -g @easyjump-label-attrs "\e[1m\e[38;5;172m"
set -g @easyjump-text-attrs "\e[0m\e[38;5;237m"
set -g @easyjump-smart-case 'on'
TMUX_FZF_LAUNCH_KEY='v'
set -g @plugin 'sainnhe/tmux-fzf'
# ======================================================================
# kevinhwang91/fzf-tmux-script
set -s focus-events on
if-shell '[[ -x ~/fakebin/alnum_async ]]' {
# force Romaji when focus gained
set-hook -g pane-focus-in[11] "run -b alnum_async"
}
# ======================================================================
set -g history-limit 100000
set -g status on
# set -g status-utf8 on
set -g status-interval 1
set -g status-justify left
set -g status-position top
set -g status-style fg=white,bg=default
# set -g status-style fg=black,bg=#5f5faf
set -g status-left-length 100
set -g status-left '#{prefix_highlight} #[fg=Blue]#{continuum_status}#[fg=default] S: #[fg=Green,bg=Black]#S#[fg=default,bg=default] W:#[fg=Green,bg=Black]#{p-2:window_index}#[fg=default,bg=default] P:#[fg=Green,bg=Black]#{p-2:pane_index}#[fg=default,bg=default] N: #[fg=Green,bg=Black]#W#[fg=default,bg=default] '
set -g status-right '#{e|+:#{cursor_x},#{e|+:#{window_offset_x},#{pane_left}}} #{e|+:#{cursor_y},#{e|+:#{window_offset_y},#{pane_top}}} %a %Y-%m-%d %H:%M %s '
set -g status-right-style fg=#8989ff
# ---------------------------------------------------------------------------
# Pane Border
# ---------------------------------------------------------------------------
set -g pane-active-border-style fg=#60c294
set -g pane-border-style fg=#522e56
set -g pane-border-status bottom
set -g pane-border-lines single
# setw -g pane-border-format '#{pane_tty} | #{pane_current_path}'
set -g pane-border-format ' | #{?pane_in_mode,#[fg=Yellow]#{pane_mode}#[fg=default],---------} | #{?pane_active,#[fg=Cyan],#[fg=default]}#{p-5:pane_pid}#[fg=default] | #{?pane_active,#[fg=Magenta],#[fg=default]}#{pane_tty}#[fg=default] | #{session_id}:#{window_id}.#{pane_id} | #{?pane_active,#[fg=Cyan],#[fg=default]}#{pane_current_path}#[fg=default] | '
set -g display-panes-active-colour yellow
set -g display-panes-colour blue
# set window list colors - red for active and cyan for inactive
# setw -g window-status-fg brightblue #base0
# setw -ag window-status-bg colour236
# message
set -g message-style 'bg=#fb3a54,fg=#e5ecff bold'
set -g message-command-style 'bg=default,fg=blue'
{{- if eq .chezmoi.os "darwin" }}
set -g default-command "exec reattach-to-user-namespace -l $SHELL"
{{ end }}
# fix remaining word
set -s set-clipboard off
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Terminfo
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# set -g default-terminal "screen-256color"
# set -g default-terminal 'tmux18-256color'
set -ga terminal-overrides ',xterm-256color:Tc'
set -ga terminal-overrides ',alacritty:Tc'
set -ga terminal-overrides ',kitty:Tc'
set -ga terminal-overrides ',*:Ss=\E[%p1%d q:Se=\E[ q'
# reduce delay
set -sg escape-time 10
set -g repeat-time 500
set -g message-limit 2000
# index number
set -g base-index 1
set -g pane-base-index 1
setw -g monitor-activity on
set -g visual-activity on
# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Key Binds
# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# set prefix key
set -g prefix C-s
unbind C-b
bind-key C-s send-prefix
bind R source-file ~/.tmux.conf \; display-message "Reloaded ~/.tmux.conf"
bind ? list-keys
bind d detach-client
# create new window
bind c new-window -c '#{pane_current_path}'
# split window
bind e split-window -h -c '#{pane_current_path}'
bind s split-window -v -c '#{pane_current_path}'
# select pane
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# session:window.pane (if omitted, defaults to current)
# bind -n C-t select-pane -t :.+
# -r means repeat
# bind -r C-p select-pane -t :.+
# bind -r d select-pane -t :.+
bind -r O select-pane -t :.-
bind -n -r ¬ select-pane -t :.+
bind -n -r ˙ select-pane -t :.-
# resize pane
bind -r H resize-pane -L 3
bind -r J resize-pane -D 3
bind -r K resize-pane -U 3
bind -r L resize-pane -R 3
# remove pane
bind q kill-pane
# copy mode settings
# start copy mode <C-s> + y
bind y copy-mode
set -g mode-keys vi
{{ if eq .chezmoi.os "darwin" }}
set -s copy-command "reattach-to-user-namespace pbcopy"
# required: brew install reattach-to-user-namespace
# USAGE) v: start select, y: yank, i: back to normal mode
bind-key -T copy-mode-vi y send-keys -X copy-pipe "reattach-to-user-namespace pbcopy" \; send-keys -X clear-selection
{{ else if eq .chezmoi.os "linux" }}
{{ if .chezmoi.kernel.osrelease | lower | contains "microsoft" }}
# WSL
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "win32yank.exe -i"
{{ else }}
# linux but not WSL
# TODO
{{ end }}
{{ end }}
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi i send-keys -X cancel
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# Mouse
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
set -g mouse on
bind-key -T root WheelUpPane if-shell -F -t = "#{alternate_on}" "send-keys -M" "select-pane -t =; copy-mode -e; send-keys -M"
bind-key -T root WheelDownPane if-shell -F -t = "#{alternate_on}" "send-keys -M" "select-pane -t =; send-keys -M"
# bind -n WheelUpPane select-pane -t= \; copy-mode -e \; send-keys -M
# bind -n WheelDownPane select-pane -t= \; send-keys -M
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"
# ****************************************************************************
# Command Aliases
# ****************************************************************************
set -s command-alias[100] 'msg=display-message -d 0'
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run -b '~/.tmux/plugins/tpm/tpm'