-
Notifications
You must be signed in to change notification settings - Fork 0
/
tmux.conf
137 lines (107 loc) · 4.08 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
# =============================================================================
# SETTINGS
# =============================================================================
# Options
set -g prefix `
set -g mouse on
set -g mode-keys vi
set -g display-time 1000
# Theme
run ~/.tmux/config/theme.tmux
# =============================================================================
# MAPPINGS
# =============================================================================
# -----------------------------------------------------------------------------
# SERVER
# -----------------------------------------------------------------------------
# Kill server
bind q confirm -p 'Kill server? (y/n)' kill-server
# -----------------------------------------------------------------------------
# CLIENTS
# -----------------------------------------------------------------------------
# Switch to last session
bind / switch-client -l
# Navigate sessions
bind p display-popup -E ~/.scripts/tmux/session/switch
# -----------------------------------------------------------------------------
# WINDOWS
# -----------------------------------------------------------------------------
# Create window
bind = new-window -c '#{pane_current_path}'
# Kill window
bind - confirm -p 'Kill window? (y/n)' kill-window
# Navigate windows
bind -r [ previous-window
bind -r ] next-window
bind -r \\ last-window
# Swap window
bind -r '<' swap-window -d -t -1
bind -r '>' swap-window -d -t +1
# -----------------------------------------------------------------------------
# PANES
# -----------------------------------------------------------------------------
# Kill pane
bind x confirm -p 'Kill pane? (y/n)' kill-pane
# Navigate panes
bind j select-pane -D
bind k select-pane -U
bind h select-pane -L
bind l select-pane -R
bind space display-panes -d 0
# Split pane
bind up split-window -b -v -c '#{pane_current_path}'
bind down split-window -v -c '#{pane_current_path}'
bind left split-window -b -h -c '#{pane_current_path}'
bind right split-window -h -c '#{pane_current_path}'
# Resize pane
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r H resize-pane -L 5
bind -r L resize-pane -R 5
# Synchronize panes
bind S set synchronize-panes
# Copy to system clipboard
# https://unix.stackexchange.com/a/349020
# https://stackoverflow.com/a/57066273/13193129
if-shell '[[ "$(uname -s)" = "Linux" ]]' {
# Mouse drag
bind-key -T copy-mode-vi MouseDragEnd1Pane \
send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -in"
# Mouse double click
bind-key -T copy-mode-vi DoubleClick1Pane \
select-pane \; send -X select-word \; \
send -X copy-pipe-no-clear "xclip -selection clipboard -in"
bind-key -n DoubleClick1Pane \
select-pane \; copy-mode -M \; send -X select-word \; run-shell "sleep 0.3s" \; \
send -X copy-pipe-and-cancel "xclip -selection clipboard -in"
# Enter key
bind-key -T copy-mode-vi Enter \
send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -in"
}
# Paste from system clipboard
# https://stackoverflow.com/a/65477173
if-shell '[[ "$(uname -s)" = "Linux" ]]' {
# Mouse middle click
bind -n MouseDown2Pane run "
tmux set-buffer -b clipboard \"$(xclip -selection clipboard -out)\";
tmux paste-buffer -b clipboard;
tmux delete-buffer -b clipboard
"
}
# Disable right click mouse menu
unbind -n MouseDown3Pane
# -----------------------------------------------------------------------------
# COPY MODE
# -----------------------------------------------------------------------------
bind c copy-mode
bind -T copy-mode-vi 'v' send -X begin-selection
bind -T copy-mode-vi 'y' send -X copy-selection
bind -T copy-mode-vi 'r' send -X rectangle-toggle
# =============================================================================
# PLUGINS
# =============================================================================
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'nhdaly/tmux-better-mouse-mode' ; run ~/.tmux/config/mouse.tmux
set -g @plugin 'tmux-plugins/tmux-resurrect' ; run ~/.tmux/config/resurrect.tmux
set -g @plugin 'tmux-plugins/tmux-sensible'
run -b ~/.tmux/plugins/tpm/tpm