使用tmux替代screen

     2014年08月16日       磊磊syh       运维笔记->系统管理       tmux screen 

介绍

screen作为一个老牌的终端屏幕管理软件完全满足我的日常需求,唯一的缺憾是screen没有分屏的功能。tmux是这样一款软件,它包含了99%的screen功能,而且它具有屏幕分屏的功能。
通过修改tmux的配置,调整快捷键,理论上screen用户可以无缝切换到tmux。

效果图

下面是我的tmux效果图
图片说明

安装Tmux

CentOS默认仓库里面没有tmux的包,我们可以选择编译安装

编译需要依赖的rpm包

yum install ncurses-devel

安装Tmux依赖的libevent

wget https://github.com/downloads/libevent/libevent/libevent-2.0.18-stable.tar.gz
tar xzf libevent-2.0.18-stable.tar.gz
cd libevent-2.0.18-stable
./configure && make
make install 

编译安装

wget http://downloads.sourceforge.net/tmux/tmux-1.9a.tar.gz
tar -xzvf tmux-1.9a.tar.gz
cd tmux-1.9a
./configure --prefix=/opt/tmux-1.9a
make

配置文件

之前介绍过screen的使用(见 http://www.opstool.com/article/177) 。如果您使用了之前screen文章里提供的配置,那么这次从screen无缝切换的tmux配置文件已经为您准备好了。配置如下:

#保存在个人home目录下 .tmux.conf
#取消默认的设定键
unbind C-b
unbind &
unbind %
unbind w
unbind '"'
 
#Escape键
set -g prefix C-a
 
#解决bash ctrl a冲突问题
bind a send-prefix
 
#窗口切分快捷键
bind \ split-window -h
bind - split-window -v
bind K confirm-before -p "kill-window #W? (y/n)" kill-window
bind '"' choose-window
 
#Pane之间切换的快捷键
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
 
#Pane大小调整快捷键
bind < resize-pane -L 5
bind > resize-pane -R 5
bind _ resize-pane -D 5
bind + resize-pane -U 5
 
#设置window属性
setw -g window-status-current-bg red
setw -g window-status-current-fg white
setw -g window-status-current-attr bright
setw -g window-status-attr bright
setw -g window-status-format '#[fg=cyan,dim]#I#[fg=blue] #[default]#W#[fg=grey,dim]'
setw -g window-status-current-format '#[fg=cyan,dim]#I#[fg=blue] #[default]#W#[fg=grey,dim]'
 
#设置状态栏
set -g status-utf8 on
set -g status-left ""
set -g status-left-length 0
set -g status-interval 2
set -g status-fg white
set -g status-bg blue
set -g status-right "%Y/%m/%d %H:%M"
set -g default-terminal "screen"
 
#设置滚屏,屏幕历史长度
set -g history-limit 10000
set -g terminal-overrides 'xterm*:smcup@:rmcup@'
setw -g mode-keys vi
setw -g utf8 on
 
#其他设置
set -sg escape-time 0

常用快捷键

复制终端字符串

1. Ctrl+a  按 [ 进入 tmux屏幕拷贝模式
2. 然后按空格键开始复制
3. 使用类似vim的上下左右键方式进行选中
4. 按enter退出复制模式
5. Ctrl+a  按 ] 进行粘贴

常用命令

列出tmux的session

tmux ls

恢复指定session

tmux att -d -t 0

遇到的问题

tmux 当前最新版本1.8不支持滚屏,换用tmux1.6就可以。这里说的滚屏是指当一个窗口(不切分小窗口的情况下)的屏幕历史通过putty的滚动条上拉去看的时候就截断了,除非进入拷贝模式去看。这样就很不方便。目前在tmux1.6版本没有发现这个问题。