博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux进阶01:tmux
阅读量:7196 次
发布时间:2019-06-29

本文共 4432 字,大约阅读时间需要 14 分钟。

tmux是linux中一种管理窗口的程序。当执行多任务时,不用开启多个客户端来回使用Alt + Tab切换,开一个客户端即可。而且,所有的状态都可以保存。

这里的状态,包括:

  • 当前的窗口内容。例如,左边窗口使用VI编辑代码,右边是调试信息。当关闭客户端,重新连接时,左右的窗口保持不变。
  • 当前的窗口的工作状态。尤其是多任务时的状态,此状态不收客户端连接Session状态的干扰,不管是前台Job还是后台Job(使用[commander] &执行命令)。省去了我们遗忘使用nohup或者at指令时,客户端异常断掉带来的麻烦。

tmux的基本概念

  • Session:连接。是一组Window的集合。
  • Window:单个可见窗口。类似一个标签页。是一组Pane的组合。
  • Pane:窗格。可以理解为一个分屏。
    三个元素在tmux的具体展现如下图,盗取自。

tmux的安装

一般采用网络直接安装的方式。版本为1.8。

1
# yum install tmux

或者

1
$ sudo apt-get install tmux

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的操作,建议使用快捷键以及配置操作。

tmux的快捷键

本章prefix表示Ctrl + b。下一章介绍如何更换prefix。

  • 有关Session的快捷键。
快捷键 操作
prefix s 查看/切换Session
prefix d 离开Session
prefix $ 重命名当前Session
  • 有关Window的快捷键
快捷键 操作
prefix c 创建Window
prefix & 关闭Window
prefix n 切换到下一个Window
prefix p 切换到上一个Window
prefix Window号 切换Window号
prefix w 查看/切换Window
  • 有关Pane的快捷键
快捷键 操作
prefix % 垂直拆分一个Pane
prefix “ 水平拆分一个Pane
prefix q 显示Pane编号
prefix o 切换到下一个Pane
prefix z 切换Pane的全屏
prefix Alt + 方向 调整Pane的大小

tmux的基本配置

编辑$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

tmux的复制粘贴

本章介绍的Buffer类似加强版剪贴板,可以显示并选择多个剪贴内容。

  • 有关复制粘贴快捷键
快捷键 操作
prefix [ 开启复制模式
prefix ] 粘贴
prefix = 显示并选择Buffers(q退出)
prefix # 仅显示Buffers
prefix - 删除编号为0的Buffers

开启复制模式后,可以用VI的移动快捷键HJKL移动到需要复制的位置,按空格键开启复制,移动到复制结束的位置,按Enter键确认,按Esc键取消。

Esc推出复制模式。

tmux的显示配置

以下配置可让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

tmux的问题

  1. Buffer和系统剪贴板无法共享

    如果是使用PuTTY链接到远程Server,使用tmux时,鼠标拖动复制是大麻烦。因为会连同其他窗格的内容一起拖动进来。
    解决方法:(A) 重新开启一个窗口,开启VIM,在编辑模式下进行粘贴,然后再用鼠标拖动复制。(B) PuTTY使用Alt+鼠标进行复制。

  2. 不支持滚屏

    当需要查看当前显示之前的内容,直接滚动鼠标滚轴不会得到我们想要的结果。
    解决方法:开启复制模式prefix [,使用PageUPPageDown进行翻页操作。

如果是登录系统界面开启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

tmux的源码安装

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/

你可能感兴趣的文章
Redis 部署策略
查看>>
2011-04-18 python 文件copy 之道 大全 (转)
查看>>
Mybatis Generator的model生成中文注释,支持oracle和mysql(通过实现CommentGenerator接口的方法来实现)...
查看>>
crate安装使用
查看>>
布隆过滤器
查看>>
cocos2dx的对象的内存释放
查看>>
模板特化疑问
查看>>
李京:中国科技大学移动平台——掌上科大
查看>>
<转>Windows下用xcode开发swift程序的图文教程 <一>
查看>>
PMCalendar
查看>>
【收藏】Aspose.Pdf应用教程
查看>>
PHP使用星号隐藏用户名,手机,邮箱的实现方法
查看>>
C++ 指针—01 指针与数组的对比
查看>>
推荐6款常用的Java开源报表制作工具
查看>>
CentOS mini安装环境下安装私有YUM服务器
查看>>
mysql case when 多参数条件语法
查看>>
iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
查看>>
实现JSON在线美化(格式化)、JSON转CSV、CSV转XML工具-toolfk程序员工具网
查看>>
Combine Two Tables[leetcode]
查看>>
Linux环境变量
查看>>