tmux使用方法

tmux是一款优秀的终端复用软件,它可以在一个ssh连接中,把窗口分隔成几块,在ssh断线时,可以保存现场,尤其适用在远程ssh时使用.

tmux结构

tmux是典型的c/s结构,它的结构如下.
tmux结构
tmux由session、window、panel组成,tmux里会有许多session,每个session里又有许多个window,每个window由多个panel组成.

当第一个session创建时,tmux server就开始在后台运行,直接最的一个session断开为止.

安装

mac

brew install tmux

ubuntu

sudo apt-get install tmux

开始使用

启动tmux

tmux

tmux里的所有操作都要先按一个激活键,类似于vi里的esc,默认的激活键是ctrl+b.输入ctrl+b,然后再输入?,即可查询所有的键位设置

session操作

c-b s 查看/切换session
c-b d 离开(detach)session
c-b $ 重命名当前session

tmux ls 列出会话
tmux attach -t session 进入某个会话
tmux -r 连接上个断开的session
tmux new -s session -d 在后台建立会话

窗口操作

c-b c 创建一个新窗口    
c-b & 关闭当前窗口  
c-b p 切换到上一个窗口  
c-b n 切换到下一个窗口  
c-b , 重命名当前窗口
c-b w 列出所有窗口
c-b 0~9 选择0~9对应的窗口
c-b opt+方向键 调整panel的大小(一次调整5%)
c-b ctrl+方向键 调整panel的大小(一次调整1%)

panel操作

c-b % 水平分割窗口
c-b " 竖直分割窗口
c-b h 将焦点移入左侧的panel
c-b j 将焦点移入下方的panel
c-b l 将焦点移入上方的panel
c-b k 将焦点移入右方的panel
c-b q 显示panel的编号 
c-b o 切换到下一个panel
c-b } 与下一个panel交换位置
c-b { 与上一个panel交换位置

复制模式(滚屏)

滚屏需要进入copy-mode,然后就可以用方向键来滚动屏幕,可以配置成vi快捷键的模式,非常方便

c-b [ 进入复制模式
space 选择要复制的内容
c-b ] 粘贴
q 退出复制模式

配置

tmux的配置文件在~/.tmux.conf,修改后可以通过重启tmux或者source-file ~/.tmux.conf来导入配置

默认的激活键ctrl+b之间太远,有许多人建议改成ctrl+a,但这样会和emacs的快捷键冲突,所以用ctrl+w应该会更好些

其他的配置这时就不仔细说了,可以参数网上的配置:

#设置PREFIX为Ctrl-a  
set -g prefix C-a  
#解除Ctrl-b与PREFIX的对应关系  
unbind C-b  
#copy-mode将快捷键设置为vi模式  
setw -g mode-keys vi  
#将r键设置为加载配置文件,并显示"reloaded!"信息  
bind r source-file ~/.tmux.conf \; display "Reloaded!"  
#设置终端颜色为256色  
set -g default-terminal "screen-256color"  
#开启status-bar uft-8支持  
set -g status-utf8 on  
#设置pan前景色  
set -g pane-border-fg green  
#设置pane背景色  
set -g pane-border-bg black  
#设置活跃pane前景色  
set -g pane-active-border-fg white  
#设置活跃pane背景色  
set -g pane-active-border-bg yellow  
#设置消息前景色  
set -g message-fg white  
#设置消息背景色  
set -g message-bg black  
#设置消息高亮显示  
set -g message-attr bright  
#设置status-bar颜色  
set -g status-fg white  
set -g status-bg black  
#设置窗口列表颜色  
setw -g window-status-fg cyan  
setw -g window-status-bg default  
setw -g window-status-attr dim  
#设置当前窗口在status bar中的颜色  
setw -g window-status-current-fg white  
setw -g window-status-current-bg red  
setw -g window-status-current-attr bright  
#设置status bar格式  
set -g status-left-length 40  
set -g status-left "#[fg=green]Session: #S #[fg=yellow]#I #[fg=cyan]#P"  
set -g status-right "#[fg=cyan]%d %b %R"  
set -g status-interval 60  
set -g status-justify centre  
#开启window事件提示  
setw -g monitor-activity on  
set -g visual-activity on 

高级功能

  • tmux可以在启动时设置各种参数,如指定session/window的名字,或者指定启动时要执行的命令,如

tmux new-session -s work -n mysql -d ‘mysql’

  • tmux可以把同一条命令发给多个终端,比如在多台相同环境的机器上,只用输入一次命令即可,首先在一个窗口中开两个面板,并分别连到几个机器,然后执行下面的命令开/关panel的同步模式,开启后,在一个面板中的命令,也会同步输入到另一个面板中

c-b :set synchronize-panes

要关闭同步输入,只需要再次输入这个命令就可以了

  • 永不断线
    可以在一台服务器上创建一个tmux进程,然后远程连接操作tmux,通过tmux来进行操作,这样在ssh重连之后,attach tmux就可以了
    也可以在跳板机上搞一个tmux,再通过这个tmux来连接其他的机器.这样做的缺点是,一段时间没有操作,tmux到服务器的ssh会自动断掉