tmux使用

tmux是一个终端复用软件,它设计的更为简单和现代,欲取代GNU的screen。tmux可以让你在一个终端里新开多个窗口(类似XShell中的多标签),并且每个窗口还可以继续切分为更小的pane。在远程登录中,tmux会保存你的工作环境,不会因为连接断开而命令停止执行,类似于nohup功能。当你重新进入原来的tmux的session后,不光之前执行的命令还在继续,原来打开的各种窗口、工作目录等都能恢复。

那么到底使用tmux能够带来哪些好处了,就个人而言,我以前的工作方式是:

  1. 打开XShell软件,SSH远程登录
  2. 打开vim或者进入某个工作目录执行命令
  3. 复制一个新的SSH窗口
  4. 重复第二步,直到我所有需要的工作环境都恢复
  5. 开始工作
  6. 为了执行代码或者查看运行日志,切出vim或者切换到新的SSH窗口查看

现在的工作方式是:

  1. 打开XShell,SSH远程登录
  2. 执行tmux命令恢复session,所有上次工作环境就恢复了
  3. 开始工作
  4. 窗口多pane,命令和日志可以直接在当前窗口执行和查看

安装

在tmux主页下载最新版的源代码包(tmux2.1 libevent2.0),tar zxvf tmux_package解压后,参考目录里的README安装。

make verify验证libevent的安装时,可能会出现下面错误。感觉应该某个域名被gfw封了导致的,没有vpn测试。在忽略这个错误继续安装后,目前都能正常使用。

FAIL regress_dns.c:156: assert(dns_ok == DNS_IPv4_A): 0 vs 1dns/gethostbyname

make编译tmux的过程中可能会出现缺少curses-dev库的错误,类debian系统中使用如下命令安装,其他系统请参考这里

sudo apt-get install libncurses5-dev

如果你是直接使用系统自带的包管理器安装的tmux,请确认下tmux的版本tmux -V。tmux 1.x的版本在lessman等命令中搜索时,查找到的字符串不会高亮,导致看起来很不方便。因此建议手动安装最新版本。

配置

tmux的配置可以存在于/etc/tmux.conf~/.tmux.conf文件中,前者是全局的配置,后者是关于特定用户的。

下面是我的配置

# 支持256 color
set -g default-terminal "screen-256color"
set -g history-limit 10000
# 设置复制模式下键位绑定方式
set-window-option -g mode-keys vi
bind k selectp -U # 选择上窗格
bind j selectp -D # 选择下窗格
bind h selectp -L # 选择左窗格
bind l selectp -R # 选择右窗格

修改完配置后,想让当前tmux的session生效,进入Command模式(如何进入参考后面的使用),执行下面命令

source-file ~/.tmux.conf

如果在配置了256色后,发现在tmux中运行的程序(如vim)依然没有256色,那么使用tmux -2命令启动,强制使用256色。

如果系统是gbk编码,但是SSH终端却使用utf-8编码连接,那么在启动时需要添加-u选项,强制使用utf-8,不然会出现乱码、花屏。

默认安装tmux后,在使用tmux命令的过程中不能tab补全,需要安装补全脚本。下载补全脚本,放在/etc/bash_completion.d/目录下,然后执行source /etc/bash_completion.d/tmux

如果按Tab键后,出现如下错误,请先创建一个tmux server就好了(就是直接运行命令tmux)。

no server running on /tmp/tmux-1000/default

使用

tmux分为几个模式:普通模式、Command模式、复制模式、粘贴模式。

普通模式就是直接使用终端。

Command模式下可以通过各种绑定的按键来操作tmux,如创建新窗口、新建pane、输入命令等,类似vim的command模式。默认进入Command模式的按键为Ctrl+b。进入Command模式后,输入:后,可以在状态栏输入命令。

复制模式下可以进行复制,进入方式为Ctrl+b->[,粘贴模式进入方式为Ctrl+b->]

session操作

创建一个默认的session,并进入tmux

tmux

新建session,并进入

tmux new-session -s session_name

暂时离开session: Ctrl+b->d

恢复原来的session

tmux attach-session -t session_name

列出已有的session

tmux list-session

关闭session: Ctrl+b -> : -> kill-session。 或者

tmux kill-session -t session_name

窗口操作

新建一个窗口: Ctrl+b -> c
关闭一个窗口: Ctrl+b -> &
窗口命名: Ctrl+b -> ,
调整窗口index: Ctrl+b -> .
选择0-9窗口: Ctrl+b -> 0-9
选择前/后窗口: Ctrl+b -> p/n

pane操作

垂直分割一个pane: Ctrl+b -> %
水平分割一个pane: Ctrl+b -> "
关闭pane: Ctrl+b -> x
选择下一个pane: Ctrl+b -> o
调整pane大小: Ctrl+b -> Ctrl+Up,Ctrl+Down,Ctrl+Left,Ctrl+Right
最大化/还原pane: Ctrl+b -> z

最后,详细的使用还是参考man tmux

Ctrl+b -> z 表示先按Ctrl+b键,然后再按z


文章作者: pzxbc
原始链接: http://blog.pzxbc.com/2016/03/30/tmux-usage/
许可协议: 创作共用保留署名-非商业-禁止演绎4.0国际许可证 转载请保留原文链接及作者