本文共 4432 字,大约阅读时间需要 14 分钟。
tmux是linux中一种管理窗口的程序。当执行多任务时,不用开启多个客户端来回使用Alt + Tab
切换,开一个客户端即可。而且,所有的状态都可以保存。
VI
编辑代码,右边是调试信息。当关闭客户端,重新连接时,左右的窗口保持不变。[commander] &
执行命令)。省去了我们遗忘使用nohup
或者at
指令时,客户端异常断掉带来的麻烦。 一般采用网络直接安装的方式。版本为1.8。
1 | # yum install tmux |
或者
1 | $ sudo apt-get install tmux |
以注释的方式解释命令的含义。
1 2 3 4 5 6 7 | $ tmux # 开启一个新的Session $ tmux ls # 查看各个Session的信息,详细命令为tmux list-session 0: 2 windows (created Mon Jul 20 14:08:12 2015) [191x45]\ (attached) # Session的编号(或名称)为0,有2个Window,当前连接(attached)状态。 $ tmux a -t 0 # 连接编号为0的Session,可简写为tmux attach-session -t 0 $ tmux kill-session -t 0 # 关闭编号为0的session,session的所有状态都会删除。不加-t则删除全部session $ tmux kill-serser # 关闭tmux服务 $ tmux start # 或start-server 重启tmux服务,重新读取配置文件 |
其他关于Session、Window和pane的操作,建议使用快捷键以及配置操作。
本章prefix表示Ctrl + b
。下一章介绍如何更换prefix。
快捷键 | 操作 |
---|---|
prefix s | 查看/切换Session |
prefix d | 离开Session |
prefix $ | 重命名当前Session |
快捷键 | 操作 |
---|---|
prefix c | 创建Window |
prefix & | 关闭Window |
prefix n | 切换到下一个Window |
prefix p | 切换到上一个Window |
prefix Window号 | 切换Window号 |
prefix w | 查看/切换Window |
快捷键 | 操作 |
---|---|
prefix % | 垂直拆分一个Pane |
prefix “ | 水平拆分一个Pane |
prefix q | 显示Pane编号 |
prefix o | 切换到下一个Pane |
prefix z | 切换Pane的全屏 |
prefix Alt + 方向 | 调整Pane的大小 |
编辑$HOME/.tmux.conf
文件,配置内容如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # 设置Prefix为Ctrl+x set-option -g prefix C-x unbind C-b bind C-x send-prefix # 使用hjkl进行Pane的选择 bind-key k select-pane -U bind-key j select-pane -D bind-key h select-pane -L bind-key l select-pane -R # 开启窗口的UTF8支持 set-window-option -g utf8 on # 复制模式中的默认键盘布局;可以设置为vi或emacs set-window-option -g mode-keys vi # 使用快捷键r重新读取配置文件 bind r source-file ~/.tmux.conf\; display "Reloaded!" # 设置Window和Pane开始编号为1 set-option -g base-index 1 set-window-option -g pane-base-index 1 |
本章介绍的Buffer类似加强版剪贴板,可以显示并选择多个剪贴内容。
快捷键 | 操作 |
---|---|
prefix [ | 开启复制模式 |
prefix ] | 粘贴 |
prefix = | 显示并选择Buffers(q退出) |
prefix # | 仅显示Buffers |
prefix - | 删除编号为0的Buffers |
开启复制模式后,可以用VI的移动快捷键HJKL
移动到需要复制的位置,按空格键
开启复制,移动到复制结束的位置,按Enter
键确认,按Esc
键取消。
Esc
推出复制模式。 以下配置可让tmux显示的更加漂亮,参考。
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 | # 显示 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 setw -g window-status-current-fg white setw -g window-status-current-bg red setw -g window-status-current-attr bright set -g pane-border-fg green set -g pane-border-bg black set -g pane-active-border-fg white set -g pane-active-border-bg yellow set -g message-fg white set -g message-bg black set -g message-attr bright set -g status-utf8 on set -g status-interval 60 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-justify centre |
Buffer和系统剪贴板无法共享
如果是使用PuTTY链接到远程Server,使用tmux时,鼠标拖动复制是大麻烦。因为会连同其他窗格的内容一起拖动进来。 解决方法:(A) 重新开启一个窗口,开启VIM
,在编辑模式下进行粘贴,然后再用鼠标拖动复制。(B) PuTTY使用Alt+鼠标
进行复制。 不支持滚屏
当需要查看当前显示之前的内容,直接滚动鼠标滚轴不会得到我们想要的结果。 解决方法:开启复制模式prefix [
,使用PageUP
和PageDown
进行翻页操作。 如果是登录系统界面开启Terminal使用tmux,可以增加如下配置,增强鼠标操作。
2015.12.25更新:最新版本(v2.1)的tmux有可能弃用了下面的鼠标支持设置。1 2 3 4 5 | # 鼠标支持 -- v2.1已弃用 Deprecated set -g mouse-resize-pane on # 鼠标调整Pane大小 set -g mouse-select-pane on # 鼠标选择Pane set -g mouse-select-window on # 鼠标选择Window set -g mode-mouse on # 鼠标选择和滚动直接开启复制模式 |
2015.12.25更新:如果启动tmux时出现unknow option
的字样时,请更新鼠标支持配置。
1 2 3 | # 鼠标支持 set -g mouse-utf8 on set -g mouse on |
2015.08.03更新本章。
CentOS6.X的yum源没有tmux,需要源码编译安装。 A. 安装编译环境1 | # yum groupinstall -y 'Development Tools' |
B. 安装ncurses-devel
1 | # yum install -y ncurses-devel |
C. 下载libevent,并编译安装。
1 2 3 | # wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz # tar xzvf libevent-2.0.21-stable.tar.gz && cd libevent-2.0.21-stable # ./configure && make && make install |
D. 下载tmux,并编译安装。
1 2 3 | # wget http://downloads.sourceforge.net/tmux/tmux-1.8.tar.gz # tar xzvf tmux-1.8.tar.gz && cd tmux-1.8 # ./configure && make && make install |
E. 配置库路径
执行cat
命令,并输入如下内容,Ctrl+d
退出 1 2 3 4 | cat - >> /etc/profile.d/libpath.sh # Initialization script for bash and sh # necessary for tmux export LD_LIBRARY_PATH="/usr/local/lib" |
使配置文件生效。
1 2 | echo "source /etc/profile.d/libpath.sh" >> ~/.bashrc source ~/.bashrc |
至此,tmux
可正常运行。
~~ EOF ~~
转载地址:http://jmkum.baihongyu.com/