#
# author : lsgx <lsgxthink@gmail.com>
# modified : 2014-11-12
#
#-- base settings --#
set -g default-terminal "screen-256color" # 设置终端缺省的支持颜色为256色
set -g display-time 3000 # 提示信息的持续时间;设置足够的时间以避免看不清提示,单位为毫秒
set -g escape-time 0 # 等待时间的持续时间;设置越小越好
set -g history-limit 65535 # 历史记录条数的最大限制值
#set -g base-index 1 # 窗口的初始序号;默认为0,这里设置为1
#set -g pane-base-index 1 # 面板的初始序号;默认为0,这里设置为1
#set -sg repeat-time 600 # 控制台激活后的持续时间;设置合适的时间以避免每次操作都要先激活控制台,单位为毫秒
#set -s quiet on
#setw -g xterm-keys on
#-- bindkeys --#
# prefix key (Ctrl+a) # 将激活控制台的快捷键由Ctrl+b修改为Ctrl+a
set -g prefix ^a
unbind ^b
bind a send-prefix
# split window # 窗口分割
unbind ‘"‘
bind - splitw -v # vertical split (prefix -) # 上下分割窗口
unbind %
bind | splitw -h # horizontal split (prefix |) # 左右分割窗口
# select pane # 选择面板
bind k selectp -U # above (prefix k) # 选择上面板
bind j selectp -D # below (prefix j) # 选择下面板
bind h selectp -L # left (prefix h) # 选择左面板
bind l selectp -R # right (prefix l) # 选择右面板
# resize pane
bind -r ^k resizep -U 2 # upward (prefix Ctrl+k) # 当前面板上移2
bind -r ^j resizep -D 2 # downward (prefix Ctrl+j) # 当前面板下移2
bind -r ^h resizep -L 2 # to the left (prefix Ctrl+h) # 当前面板左移2
bind -r ^l resizep -R 2 # to the right (prefix Ctrl+l) # 当前面板右移2
# swap pane
bind ^u swapp -U # swap with the previous pane (prefix Ctrl+u) # 与上面板交换
bind ^d swapp -D # swap with the next pane (prefix Ctrl+d) # 与下面板交换
# create new session
bind C-c new-session # 创建一个新的会话
# control sessions
bind z kill-session # 结束一个会话
# find session
bind C-f command-prompt -p find-session ‘switch-client -t %%‘ # 查找会话
# clear both screen and history
#bind -n C-l send-keys C-l \; run ‘tmux clear-history‘ # 清空屏幕内容和历史记录
# reload config (prefix r)
bind r source ~/.tmux.conf \; display "Configuration reloaded!" # 重新加载配置文件
# misc
bind e lastp # select the last pane (prefix e) # 选择最后一个面板
bind ^e last # select the last window (prefix Ctrl+e) # 选择最后一个窗口
bind q killp # kill pane (prefix q) # 关闭当前面板
bind ^q killw # kill window (prefix Ctrl+q) # 关闭当前窗口
# app
bind ! splitw htop # htop (prefix !)
bind m command-prompt "splitw ‘exec man %%‘" # man (prefix m)
bind @ command-prompt "splitw ‘exec perldoc -t -f %%‘" # perl func (prefix @)
bind * command-prompt "splitw ‘exec perldoc -t -v %%‘" # perl var (prefix *)
bind % command-prompt "splitw ‘exec perldoc -t %%‘" # perl doc (prefix %)
bind / command-prompt "splitw ‘exec ri %%‘" # ruby doc (prefix /)
#-- statusbar --#
set -g status-utf8 on # 开启状态栏的UTF-8支持
set -g status-interval 1 # 状态栏的分辨时间间隔
set -g status-keys vi # 操作状态栏时的默认键盘布局;可以设置为vi或emacs
set -g visual-activity on # 开启窗口操作的可视
set -g set-clipboard on # 开启剪切板
set -g display-panes-time 800 # slightly longer pane indicators display time # 稍长的窗格中显示的时间指标
set -g display-time 1000 # slightly longer status messages display time # 稍长的状态消息的显示时间
set -g renumber-windows on # renumber windows when a window is closed # 关闭窗口后重新编号
setw -g automatic-rename on # rename window to reflect current program # 重命名窗口,以反映当前的程序
setw -g utf8 on # 开启窗口的UTF-8支持
setw -g monitor-activity on # 开启窗口活动监视
setw -g mode-keys vi # 复制模式中的默认键盘布局;可以设置为vi或emacs
setw -g clock-mode-style 24 # 24 hour clock # 24小时显示方式
#setw -g mode-mouse on # 开启鼠标模式
# copy mode
bind Enter copy-mode # enter copy mode # 按Enter进入复制模式
bind b list-buffers # list paster buffers # 复制缓冲区列表
bind p paste-buffer # paste from the top pate buffer # 粘贴最后复制的缓冲区内容
bind P choose-buffer # choose which buffer to paste from # 选择粘贴缓冲区
# the following vi-copy bindings match my vim settings
# see https://github.com/gpakosz/.vim.git
bind -t vi-copy v begin-selection # 复制模式下开始选取
bind -t vi-copy C-v rectangle-toggle # 复制模式下矩形选取
bind -t vi-copy y copy-selection # 复制模式下复制选取的内容
bind -t vi-copy Escape cancel # 复制模式下退出复制模式
bind -t vi-copy H start-of-line # 复制模式下开始行选取
bind -t vi-copy L end-of-line # 复制模式下结束行选取
# mouse resize selcet
#setw -g mouse-resize-pane on # 鼠标调整面板大小
#setw -g mouse-select-pane on # 鼠标选择面板
#setw -g mouse-select-window on # 鼠标选择窗口
# move x clipboard into tmux paste buffer
bind C-p run "tmux set-buffer \"$(xclip -o -sel clipbaord)\"; tmux paste-buffer"
# move tmux copy buffer into x clipboard
bind C-y run "tmux show-buffer | xclip -i -sel clipbaord"
#-- colorscheme --#
# see also: https://github.com/daethorian/conf-tmux/blob/master/colors/zenburn.conf
# modes
setw -g clock-mode-colour colour223
setw -g mode-attr bold
setw -g mode-fg colour223
setw -g mode-bg colour235
# panes
set -g pane-border-bg colour234
set -g pane-border-fg colour234
set -g pane-active-border-bg colour232
set -g pane-active-border-fg colour232
# statusbar
set -g status-justify centre
set -g status-bg colour235
set -g status-fg colour248
set -g status-attr dim
set -g status-left "#[fg=green,bright]Session: #S #[fg=yellow,bright]Window: #I #[fg=cyan,bright]Pane: #P"
set -g status-left-attr bright
set -g status-left-length 30
set -g status-right "#[fg=yellow,bright][ #[fg=cyan,bright]#W #[fg=yellow,bright]]#[default] #[fg=yellow,bright]- %Y.%m.%d #[fg=green,bright]%H:%M #[default]"
set -g status-right-attr bright
set-option -g status-right-length 30
setw -g window-status-current-fg colour223
setw -g window-status-current-bg colour237
setw -g window-status-current-attr bold
#setw -g window-status-current-format "#I:#W#F"
#setw -g window-status-alert-attr bold
#setw -g window-status-alert-fg colour255
#setw -g window-status-alert-bg colour160
# messages
set -g message-attr bold
set -g message-fg colour223
set -g message-bg colour235