-
Notifications
You must be signed in to change notification settings - Fork 0
/
.tmux.conf
140 lines (107 loc) · 3.54 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
# use ` as prefix
unbind C-b
set -g prefix `
bind ` send-prefix
# delay between to keystroke for repeatable commands
set -g repeat-time 300
set -s escape-time 0
# move status bar to top
set -g status-position top
# color
source-file ~/.config/tmux/tinted-tmux/colors/base16-tomorrow-night.conf
set -g allow-passthrough on
# format
source ~/.config/tmux/format.conf
# increase history limit (default to 2000)
set -g history-limit 100000
# set tmux TERM environement variable
set -g default-terminal "screen-256color"
# simple title to currently running program
set -g set-titles on
set -g set-titles-string "#W"
setw -g automatic-rename on
setw -g monitor-activity on
# use vi style in copy mode
setw -g mode-keys vi
# change start index to 1, 0 is too far
set -g base-index 1
set -g renumber-windows on
# enable mouse
set -g mouse on
# delay to repeatedly press a key (default 500ms)
# set -g repeat-time 700
#
# Key binding
#
# help
# bind ? list-keys
# reload config
bind r source ~/.tmux.conf \; display "config reloaded"
# close server/window/pane
bind - confirm kill-server
bind = confirm kill-window
bind BSpace confirm kill-pane
# unbind detach
unbind d
bind x detach
# split pane horizontal/vertical
bind i split-window -v
bind s split-window -h
bind n command-prompt 'rename-window %%'
# pane navigation (vim compatible) from https://github.com/christoomey/vim-tmux-navigator
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
bind Left if "$is_vim" "send ` Left" "select-pane -L"
bind Down if "$is_vim" "send ` Down" "select-pane -D"
bind Up if "$is_vim" "send ` Up" "select-pane -U"
bind Right if "$is_vim" "send ` Right" "select-pane -R"
bind Tab if "$is_vim" "send ` Tab" "select-pane -t :.+"
bind h if "$is_vim" "send ` h" "select-pane -L"
bind j if "$is_vim" "send ` j" "select-pane -D"
bind k if "$is_vim" "send ` k" "select-pane -U"
bind l if "$is_vim" "send ` l" "select-pane -R"
# pane swap
bind -r . swap-pane -D
bind -r , swap-pane -U
# pane resize
bind -n M-Up resize-pane -U 4
bind -n M-Down resize-pane -D 4
bind -n M-Left resize-pane -L 4
bind -n M-Right resize-pane -R 4
bind -n M-k resize-pane -U 4
bind -n M-j resize-pane -D 4
bind -n M-h resize-pane -L 4
bind -n M-l resize-pane -R 4
# pane toggle fullscreen
bind f resize-pane -Z
bind t respawn-pane -k
# enter copy mode by mouse scroll or <prefix>]
# select by line
bind -T copy-mode-vi v send -X begin-selection
# select by block
bind -T copy-mode-vi r send -X rectangle-toggle
# copy with y
#bind -T copy-mode-vi y send -X copy-pipe \; display "yanked selection"
if-shell "uname | grep -q Darwin" \
'bind -T copy-mode-vi y send -X copy-pipe pbcopy \; display "yanked selection"' \
'bind -T copy-mode-vi y send -X copy-pipe "xclip -sel clip -i" \; display "yanked selection"'
# copy with mouse left click + drag
bind -T copy-mode-vi MouseDragEnd1Pane send -X copy-pipe "xclip -sel clip -i" \; display "copied slection"
# copy with mouse right click
bind -T copy-mode-vi MouseDown3Pane send -X copy-pipe "xclip -sel clip -i" \; display "copied slection"
# paste with p
bind p paste-buffer
# paste with mouse right click
bind -n MouseDown3Pane paste-buffer
# move-pane
# -v vertical
# -h hortizontal
# -l size (number of col or line)| -p percentage
# -b before (left or up)
# -d no focus (do not make the new pane active)
# -f full (width or height)
# -s src pane
# -t dst pane
# Drag & drop windows
unbind-key -n MouseDrag1Status
bind-key -n MouseDrag1Status swap-window -d -t=