tmux配置

##############################################
#  @file   : tmux.conf
#  @brief  : Tmux Config File
#  @author : 
#  @version: 1.0
#  @date   : 2018-03-19
##############################################

##############################################
#   tmux commands help
#   https://tmuxcheatsheet.com/
#
#   tmux使用C/S模型构建,主要包括以下单元模块:
#   server服务器。输入tmux命令时就开启了一个服务器。
#   session会话。一个服务器可以包含多个会话
#   window窗口。一个会话可以包含多个窗口。
#   pane面板。一个窗口可以包含多个面板。
##############################################

###------------ tmux commands -------------###
#  tmux ls                  :list session
#  tmux kill-session
#  tmux kill-session -a
#  tmux kill-session -t xx  :删除除了xx以外的所有session
#  tmux new -s xxx          :创建名为xxx的session
#  tmux a -t xxx            :attach重连xxx session
#  tmux a                   :只有一个session
#  tmux new -s session
#  tmux new -s session -d   :#在后台建立会话
#  tmux rename-session -t <会话名>
#  tmux choose-session -t <会话名>
###---------------------------------------###

################### 快捷键 ####################
##  C-b ? 显示快捷键帮助
##  C-b : 命令行模式 
##  C-b t 显示时钟
##  
##  [会话相关]:
##  prefix+$ : 重命名当前会话
##  prefix+:new<回车>  启动新会话
##  prefix+s           列出所有会话,以菜单方式显示和选择会话
##  C-b d              退出tumx,并保存当前会话,
##                     tmux仍在后台运行,可以通过tmux attach进入 到指定的会话
##  [窗口相关]:
##  C-b c  创建新窗口      create new windows
##  prefix w  列出所有窗口
##  prefix n  后一个窗口
##  prefix p  前一个窗口
##  prefix f  查找窗口
##  prefix ,  重命名当前窗口 rename windows
##  prefix &  关闭当前窗口   close curr window
##  prefix 1~9 跳到第n个窗口 go x window
##  prefix w  以菜单方式显示及选择窗口
##  prefix !  把当前窗口变为新窗口
##  swap-window -s 3 -t 1  交换 3 号和 1 号窗口
##  swap-window -t 1       交换当前和 1 号窗口
##  move-window -t 1       移动当前窗口到 1 号
##  [面板相关]:
##  C-b C-o 调换面板位置,类似与vim 里的C-w
##  C-b 空格键 采用下一个内置面板布局
##  C-b “ 横向分隔pane
##  C-b % 纵向分隔pane
##  C-b q 显示分隔面板的编号
##  C-b o 跳到下一个分隔面板
##  C-b ; 切换到最后一个使用的面板last-pane
##  C-b [hjkl] 切换面板
##  C-b x 关闭面板
##  C-b q n(然后按对应的编号) : 按编号选择pane
##  C-b z:将当前panel最大化/恢复原窗口布局 Zoom in/Zomm out
##  C-b % : 水平分割pane
##  C-b ^ : 垂直分割pane
##  C-b " : 竖直分割pane
##  C-b pageup/pagedown  翻屏
##  C-b [up/down/left/right] 调整分隔窗口大小
###############################################


###===== configure ======###
#unbind C-b  : 解除与C-b前缀的对应关系
unbind-key C-p
unbind-key C-n

###--- base settings ---###
######------此类配置可以在命令行模式中输入show-options -g查询------######
set -g default-terminal "screen-256color"         #支持256位色
set -g display-time 3000                          #提示信息持续时间,单位ms
set -sg escape-time 1                             #设定前缀键和命令键之间的延时
set -g history-limit 256
set -g base-index 1                               #窗口初始序号为1,默认为0
set -g pane-base-index 1                          #Panle初始序号为1,默认为0

set-option -g repeat-time 2000                    #控制台激活后的持续时间;设置合适的时间以避免每次操作都要先激活控制台,单位为毫秒

###====== statusbar ======###
set-option -g status-keys vi                       #操作状态栏时的默认键盘布局;可以设置为vi或emacs
#set-option -g status-right "#(date +%H:%M' ')"    #状态栏右方的内容;这里的设置将得到类似23:59的显示
#set-option -g status-right-length 10              #状态栏右方的内容长度;建议把更多的空间留给状态栏左方(用于列出当前窗口)
#set -g status-interval 3
#FIXME:[NOT OK]
#set -g status-utf8 on                             #开启状态栏的UTF-8支持

### 颜色 ###
set -g status-bg black
set -g status-fg white
set -g status-interval 60                          #每60s更新状态栏
### 对齐方式 ###
set-option -g status-justify centre
### 左下角 ###
#set-option -g status-left '#[bg=black,fg=green][#[fg=cyan]session:#S#[fg=green]]'
set-option -g status-left '#[bg=black,fg=green][#[fg=cyan]S:#S W:#W#[fg=green]]'  ##OK
#set-option -g status-left '#[bg=colour47,fg=colour33][#[fg=cyan]S:#S W:#W#[fg=green]]' ###doing
set-option -g status-left-length 20
### 窗口列表 ###
setw -g automatic-rename on
#set-window-option -g window-status-format '#[dim]#I:#[default]#W#[fg=grey,dim]'
#set-window-option -g window-status-current-format '#[fg=cyan,bold]#I#[fg=blue]:#[fg=cyan]#W#[fg=dim]'
set-window-option -g window-status-format '#[dim]#I:#[default]#P#[fg=grey,dim]'
set-window-option -g window-status-current-format '#[fg=cyan,bold]#I#[fg=blue]:#[fg=cyan]#P#[fg=dim]'
### 右下角 ###
set-option -g status-right-length 30              #状态栏右方的内容长度;建议把更多的空间留给状态栏左方(用于列出当前窗口)
set -g status-right '#[fg=green][#[fg=cyan]%Y-%m-%d %H:%M#[fg=green]] '

#set -g status-left #[fg=Green]#(whoami)#[fg=white]::#[fg=blue] (hostname -s)#[fg=white]::##[fg=yellow]#(curl ipecho.net/plain;echo);
#set -g status-right #[fg=Cyan]#S #[fg=white]%a %d %b %R


######------将激活控制台的快捷键由Ctrl+b修改为Ctrl+a------######
# Send prefix
set-option -g prefix C-a
unbind-key C-a
bind-key C-a send-prefix


######------此类设置可以在命令行模式中输入show-window-options -g查询------######
setw -g automatic-rename off
#copy-mode 将快捷键设置为vi 模式
set-window-option -g mode-keys vi    #复制模式中的默认键盘布局;可以设置为vi或emacs
#FIXME:[NOT OK]
#set-window-option -g utf8 on         #开启窗口的UTF-8支持

######------ 选择/复制/粘贴 ------######
# copy-mode 默认配置键:
#Prefix+[ : 进入复制模式
#按 space 开始复制,移动光标选择复制区域
#按 Enter 复制并退出copy-mode。
#Prefix+]   :将光标移动到指定位置,粘贴

#copy-mode 修改后的配置键
#Prefix+Esc :进入vi模式
#h/j/k/l    :移动光标
#v          :选择
#y          :复制+退出copy-mode
#Prefix+]   :粘贴

## enter copy mode (prefix Escape) ##
unbind-key Escape
bind Escape copy-mode                   #取消默认进入copy模式的快捷键prefix+Esc
# paste buffer (prefix Ctrl+p)
bind ^p pasteb
# select (v)
bind-key -T copy-mode-vi v send-keys -X begin-selection
# copy (y)
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel 

#FIXME:[NOT work]
##bind -t vi-copy v begin-selection
##bind -t vi-copy y copy-selection


######------ Easy config reload ------######
#bind-key r source-file ~/.tmux.conf \; display-message "tmux.conf reloaded"
bind C-r source-file ~/.tmux.conf \; display-message "tmux.conf reloaded"


######------ Use [hjkl] to switch panes ------######
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

bind C-h select-pane -L
bind C-j select-pane -D
bind C-k select-pane -U
bind C-l select-pane -R

# Use Alt-arrow keys to switch panes
#bind -n M-Left select-pane -L
#bind -n M-Right select-pane -R
#bind -n M-Up select-pane -U
#bind -n M-Down select-pane -D

######------ resize pane ------######
unbind-key C-Up
unbind-key C-Down
unbind-key C-Left
unbind-key C-Right

#[not work]
bind -r C-Up resizep -U 5
bind -r C-Down resizep -D 5
bind -r C-Left resizep -L 5
bind -r C-Right resizep -R 5

bind -r Up resizep -U 3
bind -r Down resizep -D 3
bind -r Left resizep -L 3
bind -r Right resizep -R 3

######------  Shift [C-p/C-n] to switch windows ------######
bind C-p previous-window
bind C-n next-window

# Shift arrow to switch windows
# [FIXME: no work]
#bind -n S-Left previous-window
#bind -n S-Right next-window

######------  Set easier window split keys [%/^] ------######
# Set easier window split keys [%/^]
#bind-key % split-window -h
bind-key ^ split-window -v
#bind - splitw -v #横向分割
#bind | splitw -h #纵向分割

######------  Mouse mode [FIXME: NOT OK] ------######
# (setw其实是set-window-option的别名)
#set-window-option -g mode-mouse on
#setw -g mouse-resize-pane on # 开启用鼠标拖动调节pane的大小(拖动位置是pane之间的分隔线)
#setw -g mouse-select-pane on # 开启用鼠标点击pane来激活该pane
#setw -g mouse-select-window on # 开启用鼠标点击来切换活动window(点击位置是状态栏的窗口名称)
#setw -g mode-mouse on # 开启window/pane里面的鼠标支持(也即可以用鼠标滚轮回滚显示窗口内容,此时还可以用鼠标选取文本)

# [FIXME: NOT OK]
#set -g mode-mouse on
###  tmux version > 2.1 no use
#set -g mouse-resize-pane on
#set -g mouse-select-pane on
#set -g mouse-select-window on

######------ 默认启动应用, 当tmux启动时,可以默认启动一些应用 ------######
#[NOT OK]
#new -s job    #新建名为job的会话
#neww ranger   #启动ranger
#neww vim      #启动vim
#selectw -t 3  #默认选择标号为 3 的窗口


######------ 设定窗口布局 ------######
bind C-X source-file ~/.tmux/mylayout
#select-pane -t 1
##selectp -t 1     #选中第0个窗格
#splitw -h -p 50  #将其分成左右两个
#selectp -t 2     #选中第一个,也就是右边那个
#splitw -v -p 50  #将其分成上下两个,这样就变成了图中的布局了
#selectp -t 1     #选回第一个


#-d 立即从这个新建回话中分离。
#tmux new-session -s mutou -n Win1 -d
#tmux send-keys -t development 'cd /opt/' C-m
#tmux send-keys development 'vim' C-m
#tmux split-window -v -p 10 -t Win1
#tmux select-layout -t development main-horizontal

######------ 设定消息格式 ------######
set -g message-fg white
set -g message-bg black
set -g message-attr bright

###--—----------TODO:------------###
## 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

## swap pane
## swap with the previous pane (prefix Ctrl+u)
#bind ^u swapp -U
## swap with the next pane (prefix Ctrl+d)
#bind ^d swapp -D
#
#
## misc
## select the last pane (prefix e)
#bind e lastp
## select the last window (prefix Ctrl+e)
#bind ^e last
## kill pane (prefix q)
#bind q killp
## kill window (prefix Ctrl+q)
#bind ^q killw
#
#
## app
## htop (prefix !)
#bind ! splitw htop
## man (prefix m)
#bind m command-prompt "splitw 'exec man %%'"
## perl func (prefix @)
#bind @ command-prompt "splitw 'exec perldoc -t -f %%'"
## perl var (prefix *)
#bind * command-prompt "splitw 'exec perldoc -t -v %%'"
## perl doc (prefix %)
#bind % command-prompt "splitw 'exec perldoc -t %%'"
## ruby doc (prefix /)
#bind / command-prompt "splitw 'exec ri %%'"
#
##-- colorscheme --#
##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
#
#set -g pane-active-border-bg colour132
#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
##[default]>> #[fg=colour187]#S #[default] #[fg=colour187]w#I.p#P#[default]"
#set -g status-left "
#set -g status-left-attr bright
#set -g status-left-length 20
##[fg=colour174]#(/home/xiaodong/bin/uptime) #[default] #[fg=colour174]#(cut -d ' ' -f 1-3 /proc/loadavg)"
#set -g status-right "
#set -g status-right-attr bright
#set -g status-right-length 80
#
#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

#=====================TODO==============
#":"进入命令行
#bind : command-prompt

#执行命令,比如:看 Manpage、查 Perl 函数,开启info,在新的window中进行ssh连机,自动载入fish
#bind m command-prompt "splitw -h 'exec man %%'"
#bind @ command-prompt "splitw -h 'exec perldoc -f %%'"
#bind / command-prompt "split-window 'exec info %%'"
#bind S command-prompt "new-window -n %1 'ssh %1'"

#定制状态行
#状态行左边默认就很好了,我对右边定制了一下,显示 uptime 和 loadavg:
#set -g status-right "#[fg=green]#(uptime.pl)#[default]   #[fg=green]#(cut -d ' ' -f 1-3 /proc/loadavg)#[default]"

#设置状态行的背景和前景色:具体设置请自行查阅man
#常用颜色:black,white,(bright)red,(bright)green,(bright)yellow,(bright)blue,(bright)magenta,(bright)cyan,and so on

##总的状态栏
#set -g status-fg brightcyan
#set -g status-bg white
#
##左右的状态栏
#set -g status-left-fg brightred
#set -g status-left-bg yellow
#set -g status-right-fg brightgreen
#set -g status-right-bg brightmagenta
#
##window状态栏
#set -g window-status-fg brightyellow
#set -g window-status-bg brightcyan
#set -g window-status-activity-fg brightred
#set -g window-status-activity-bg brightgreen
#set -g window-status-current-fg brightred
#set -g window-status-current-bg brightgreen
#set -g window-status-content-fg yellow
#set -g window-status-content-bg red
#set -g window-status-bell-fg red
#set -g window-status-bell-bg green
#
##pane相关的状态栏
#set -g pane-border-fg brightyellow
#set -g pane-border-bg brightblue
#set -g pane-active-border-fg brightgreen
#set -g pane-active-border-bg red
#
#set -g message-fg brightred
#set -g message-bg green
#set -g message-command-fg brightblue
#set -g message-command-bg cyan
#
#set -g mode-fg brightred
#set -g mode-bg green
#
##时钟颜色
#set -g clock-mode-colour brightred
#set -g clock-mode-style 12

set -g status-fg colour190
set -g status-bg colour234

#setw -g window-status-current-fg colour190
#setw -g window-status-current-bg colour234
#setw -g window-status-current-attr bright

###可视化通知###
setw -g monitor-activity on
set -g visual-activity on

###命令控制打开日志功能
#bind C-l pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"
 

你可能感兴趣的:(tmux配置)