Tmux是一个终端复用软件,它设计的更为简单和现代,欲取代GNU的Screen。Tmux可以让你在一个终端里新开多个窗口(类似XShell中的多标签),并且每个窗口还可以继续切分为更小的pane。在远程登录中,Tmux会保存你的工作环境,不会因为连接断开而命令停止执行,类似于nohup功能。当你重新进入原来的Tmux的session后,不光之前执行的命令还在继续,原来打开的各种窗口、工作目录等都能恢复。
那么到底使用Tmux能够带来哪些好处了,就个人而言,我以前的工作方式是:
- 打开XShell软件,SSH远程登录
- 打开vim或者进入某个工作目录执行命令
- 复制一个新的SSH窗口
- 重复第二步,直到我所有需要的工作环境都恢复
- 开始工作
- 为了执行代码或者查看运行日志,切出vim或者切换到新的SSH窗口查看
现在的工作方式是:
- 打开XShell,SSH远程登录
- 执行Tmux命令恢复session,所有上次工作环境就恢复了
- 开始工作
- 窗口多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的版本在less
、man
等命令中搜索时,查找到的字符串不会高亮,导致看起来很不方便。因此建议手动安装最新版本。
配置
tmux的配置可以存在于/etc/tmux.conf
和~/.tmux.conf
文件中,前者是全局的配置,后者是关于特定用户的。
Tmux支持插件扩展,TPM
是Tmux的插件管理器
插件安装git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
个性配置# list of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'seebi/tmux-colors-solarized'
# set -g @plugin 'arcticicestudio/nord-tmux'
# plugins configuration
# set -g @nord_tmux_no_patched_font "1"
set -g @colors-solarized 'dark'
# 支持256 color
# set -g default-terminal "screen-256color"
set -g terminal-overrides ',xterm-256color:Tc'
# increase scrollback buffer size
set -g history-limit 50000
# tmux messages are displayed for 4 seconds
set -g display-time 4000
# refresh 'status-left' and 'status-right' more often
set -g status-interval 5
# super useful when using "grouped sessions" and multi-monitor setup
setw -g aggressive-resize on
set-window-option -g mode-keys vi
bind k selectp -U # 选择上窗格
bind j selectp -D # 选择下窗格
bind h selectp -L # 选择左窗格
bind l selectp -R # 选择右窗格
bind-key R source-file ~/.tmux.conf \; \
display-message "source-file done"
# Initialize tmux plugin manager(kepp this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
修改完配置后,想让当前tmux的session生效,进入Command模式(如何进入参考后面的使用),执行下面命令source-file ~/.tmux.conf
如果在配置了256色后,发现在tmux中运行的程序(如vim)依然没有256色,那么使用tmux -2
命令启动,强制使用256色。
如果系统是gbk
编码,但是SSH终端却使用utf-8
编码连接,那么在启动时需要添加-u
选项,强制使用utf-8
,不然会出现乱码、花屏。
建议.bash_aliases
中添加`alias tmux=’tmux -2 -u’
默认安装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,并进入tmuxtmux
新建session,并进入tmux new-session -s session_name
暂时离开session: Ctrl+b
->d
恢复原来的sessiontmux attach-session -t session_name
列出已有的sessiontmux 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
键