tmux简介
tmux是BSD实现的Screen替代品,相对于Screen,它更加先进:支持屏幕切分,而且具备丰富的命令行参数,使其可以灵活、动态的进行各种布局和操作。它可以做到一条命令就启动起来(强大的配置)
安装方法
系统 | 安装命令 |
---|---|
mac | brew install tmux (前提需要安装homebrew) |
ubuntu | sudo apt-get install tmux |
centos | yum install -y tmux |
其它 | 下载源码配置-编译-链接-安装 |
概念名词
在你输入tmux开启了tmux服务器后,会首先创建一个会话,而这个会话则会首先创建一个窗口,其中仅包含一个面板; 也就是说,这里看到的所谓终端控制台应该称作tmux的一个面板,虽然其使用方法与终端控制台完全相同。
概念 | 说明 |
---|---|
server服务器 | 输入tmux命令时就开启了一个服务器 |
session会话 | 一个服务器可以包含多个会话 |
window窗口 | 通过c-b-c创建,所有窗口的名称显示在底部状态栏上,一个会话可以包含多个窗口 |
pane面板 | 窗口里面的分屏,可通过c-b-%创建,一个窗口可以包含多个面板 |
使用场景和优点
- tmux命令开启一个终端之后,可以在这个终端里开启多个windows,同时还可以把windows split成多个pane,并行工作
- ssh登录远程主机的情景下,一旦ssh断开,那么当前账户登录的任务就被取消了,但是使用 tmux 可以在断开之后继续工作,下次登录可以查看
常用默认快捷键
tmux里边所有快捷键都默认以c-b作为前缀,也就是以ctrl+b开头,当然你也可以自行配置;
- 基本命令
tmux
创建一个tmux sessiontmux new -s session_name
创建一个叫做session_name的 sessiontmux ls\tmux list-sessions
列出现有的所有sessiontmux info
列出所有的 session, window, pane, 运行的进程号等tmux list-keys
列出所有可以的快捷键和其运行的 tmux 命令tmux list-commands
列出所有的 tmux 命令及其参数tmux at(attach) -t session_name
进入叫做session_name的sessiontmux detach\c-b-d
离开当前开启的sessiontmux kill-session -t session
关闭开启的session
基本操作
d
脱离并保存当前会话,可暂时返回Shell界面,tmux仍在后台运行ctrl + z
挂起当前会话s
选择并切换会话;在同时开启了多个会话时使用D
选择要脱离的会话;在同时开启了多个会话时使用:
进入命令行模式;此时可输入支持的命令,例如 kill-server 关闭所有tmux会话t
显示当前的时间
窗口操作
c
创建新窗口&
关闭当前窗口[0-9]
数字键切换到指定窗口p
切换至上一窗口n
切换至下一窗口l
切换到最后使用的窗口l
前后窗口间互相切换w
通过窗口列表切换窗口,
重命名当前窗口,便于识别.
修改当前窗口编号,相当于重新排序f
在所有窗口中查找关键词,便于窗口多了切换
- (面板)分屏操作
?
显示快捷键帮助"
将当前面板上下分屏(建议设置成 |)%
将当前面板左右分屏(建议设置成 -)x
关闭当前分屏q
显示面板编号o
选择当前窗口中下一个面板;
切换到最后一个使用的面板方向键
移动光标选择对应面板z
最大化当前所在面板!
面板转变成窗口
推荐配置
如果你有个性化配置的需要,包括快捷键,状态栏等,那么修改~/.tmux.conf文件可以达到你的目的,让你用起来更符合自己的习惯; 也可以通过配置~/.bashrc每次ssh登录时都默认attach或者新建tmux会话
- tmux.conf配置快捷键,配色等
# 开启鼠标生效
set-option -g mouse on
#设置前缀为Ctrl + x
set -g prefix C-x
unbind C-b
# key bindings for horizontal and vertical panes
unbind %
bind | split-window -h # 使用|竖屏,方便分屏
unbind '"'
bind - split-window -v # 使用-横屏,方便分屏
# status bar with load and time
set -g status-bg blue
set -g status-fg '#bbbbbb'
set -g status-left-fg green
set -g status-left-bg blue
set -g status-right-fg green
set -g status-right-bg blue
set -g status-left-length 90
set -g status-right-length 90
set -g status-left '[#(whoami)]'
set -g status-right '[#(date +" %m-%d %H:%M ")]'
set -g status-justify "centre"
set -g window-status-format '#I #W'
set -g window-status-current-format ' #I #W '
setw -g window-status-current-bg blue
setw -g window-status-current-fg green
# pane number display
set -g display-panes-active-colour colour33 #blue
set -g display-panes-colour colour166 #orange
set -g base-index 1
set -g pane-base-index 1
set -g display-time 3000
set -g history-limit 10000
# copy-mode 将快捷键设置为 vi 模式
setw -g mode-keys vi
# 选中窗口
bind-key k select-pane -U
bind-key j select-pane -D
bind-key h select-pane -L
bind-key l select-pane -R
~/.bash_rc配置登录时自动进入tmux
tmux_init() { tmux new-session -s "xiaoyong" -d -n "local" # 开启一个会话 tmux new-window -n "other" # 开启一个窗口 tmux split-window -h # 开启一个竖屏 tmux split-window -v # 开启一个横屏 tmux -2 attach-session -d # tmux -2强制启用256color,连接已开启的tmux } # 判断是否已有开启的tmux会话,没有则开启 if which tmux 2>&1 >/dev/null; then test -z "$TMUX" && (tmux attach || tmux_init) fi
参考链接
- tmux指南
- tmux如何将内容复制到系统clipboard ? Mac下如果用 iterm2 可以在 preference 下选择 Applications in terminal may access clipboard