-
Notifications
You must be signed in to change notification settings - Fork 0
/
tmux.conf
182 lines (144 loc) · 4.97 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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
# Filename: ~/.tmux.conf
# Created: 2013-09-02
# Desc:
# _
# | |_ _ __ ___ _ ___ __
# | __| '_ ` _ \| | | \ \/ /
# | |_| | | | | | |_| |> <
# \__|_| |_| |_|\__,_/_/\_\
#
# Author: xutao(Tony Xu), [email protected]
# Company: myself
# Global settings {
# Default termtype. If the rcfile sets $TERM, that overrides this value.
set -g default-terminal "screen-256color"
# Bigger history
set -g history-limit 65535
# 提示信息的持续时间(ms)
set -g display-time 3000
# 控制台激活后的持续时间(ms)
set -g repeat-time 500
# 设置前缀命令和命令的间隔时间
set -g escape-time 0
# tmux >= 2.6
# set -sg escape-time 0
# Index starts from 1
# set -g base-index 1
# setw -g pane-base-index 1
# Renumber windows when a window is closed
set-option -g renumber-windows on
# }
# Key bindings {
# Screen like binding
set-option -g prefix C-a
unbind-key C-b
bind-key a send-prefix
# if-shell "test $USER = tony" \
# "unbind C-a; set-option -g prefix \\ ; bind-key ] send-prefix; bind-key \\ last-window"
# >=1.9
bind c new-window -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
bind | split-window -h -c "#{pane_current_path}"
bind-key C-v select-layout even-vertical
bind -r > swap-window -d -t :+
bind -r < swap-window -d -t :-
# bind-key W choose-tree -Zw "swap-window -t '%%'"
# bind-key P choose-tree -Zw "swap-pane -t '%%'"
# Select pane
bind k select-pane -U
bind j select-pane -D
bind h select-pane -L
bind l select-pane -R
# Pane resize
bind -r C-k resize-pane -U 10
bind -r C-j resize-pane -D 10
bind -r C-h resize-pane -L 10
bind -r C-l resize-pane -R 10
# Swap pane
bind c-u swap-pane -U
bind c-d swap-pane -D
bind '~' split-window btm
# bind ! split-window ncmpcpp
# bind m command-prompt "splitw 'exec man %%'"
# unbind s
# misc
bind e last-pane
bind c-e last-window
bind q kill-pane
bind c-q kill-window
bind b setw synchronize-panes
set-hook -g after-kill-pane 'select-layout even-vertical'
set-hook -g pane-exited 'select-layout even-vertical'
# bind - split-window -v -c "#{pane_current_path}" \; select-layout even-vertical
# bind | split-window -h -c "#{pane_current_path}" \; select-layout even-horizontal
# }
# Window settings {
# Much more reasonable.
setw -g aggressive-resize on
set -g allow-rename off
setw -g automatic-rename on
# Set terminal title
set -g set-titles on
# set -g set-titles-string '#h ❐ #S #I #W'
set -g set-titles-string '#T'
# Copy-mode
setw -g mode-keys vi
set -s set-clipboard on
bind-key -T copy-mode-vi 'v' send -X begin-selection
bind-key -T copy-mode-vi 'y' send -X copy-selection
# set-option -g default-command "reattach-to-user-namespace -l $SHELL"
# bind-key -T copy-mode-vi 'y' send -X copy-pipe "reattach-to-user-namespace pbcopy"
# bind y run "tmux save-buffer - | reattach-to-user-namespace pbcopy" \; display-message "Copied tmux buffer to system clipboard"
# bind C-v run "reattach-to-user-namespace pbpaste | tmux load-buffer - && tmux paste-buffer"
# }
# Pane {
# set -g pane-border-fg green
# set -g pane-border-bg black
# set -g pane-active-border-fg colour245
# set -g pane-border-fg colour243
# set -g pane-active-border-fg white
# set -g pane-active-border-bg yellow
# }
# Status {
# emacs key bindings in tmux command prompt (prefix + :)
set -g status-keys emacs
set -g status-style bg=default,fg=cyan # v2.7
# set -g status-fg cyan
# set -g status-bg default
# setw -g window-status-format '#[bg=default]#[fg=cyan] #I:#W#F'
setw -g window-status-current-format '#[bg=red]#[fg=white]#I:#W#F'
set -g status-left-length 40
set -g status-left "#[fg=green]#h S:#S #[fg=yellow]W:#I #[fg=cyan]P:#P"
set -g status-right "#{?pane_synchronized, #[fg=colour196]*SYNC*#[default],} | #[fg=cyan][%W] %a %b %d %R"
# set -g status-right "#(~/.bin/tmuxstatusline.sh) #{?pane_synchronized, #[fg=colour196]*SYNC*#[default],} | #[fg=cyan][%W] %a %b %d %R"
# set -g status-right "#[fg=cyan]#(~/.bin/tmuxstatusline.sh) #[fg=cyan][%W] %Y-%m-%d %H:%M"
set -g status-right-length 40
# set -g status-right-attr bright
set -g status-interval 30
set -g status-justify centre
# }
# Start app {
# new -s work vim
# neww -n rtorrent
# neww zsh
# selectw -t 3
# }
# Tips message {
# set -g message-fg colour223
# set -g message-bg colour235
# set -g message-attr bold
setw -g monitor-activity on
# set -g visual-activity on
# }
bind r source-file ~/.tmux.conf \; display-message "Config Reloaded ..."
# Plugins {
# prefix+Ctrl-s - save
# prefix+Ctrl-r - restore
set -g @resurrect-processes 'vimx'
# mkdir -p $HOME/.tmux/plugins
# git clone --depth=1 https://github.com/tmux-plugins/tmux-resurrect ~/.tmux/plugins/tmux-resurrect
if-shell 'test -f "$HOME/.tmux/plugins/tmux-resurrect/resurrect.tmux"' 'run-shell ~/.tmux/plugins/tmux-resurrect/resurrect.tmux'
# if-shell 'test -f "$HOME/.tmux/plugins/tmux-copycat/copycat.tmux"' 'run-shell ~/.tmux/plugins/tmux-copycat/copycat.tmux'
# }
if-shell 'test -f "$HOME/.tmux.conf.local"' 'source ~/.tmux.conf.local'
# vim: set sw=4 ts=4 sts=4 et tw=78 foldmarker={,} foldlevel=0 foldmethod=marker: