若是说有什么工具能够用相见恨晚 来形容的话,Tmux 算一个。html
Tmuxs 是一款优秀的终端复用工具,使用它最直观的好处就是,经过一个终端登陆远程主机并运行tmux后,在其中能够开启多个控制台而无需再“浪费”多余的终端来链接这台远程主机;git
使用 Tmux 的时候千万不要去背指令,全部的指令均可以在 .tmux.conf
配置文件中绑定本身顺手的快捷键,也能够配置开启鼠标。github
这个是个人配置文件:https://github.com/zuorn/tmux.conf编程
在Tmux逻辑中,须要分清楚Server > Session > Window > Pane这个大小和层级顺序是极其重要的,直接关系到工做效率:ubuntu
了解了这个逻辑后,整个Tmux的使用和配置也就清晰了。
(ps:下面这种方便好看的Status bar状态栏,显示的是windows,而不是sessions)
segmentfault
在 Mac OS 中,经过 brew 安装windows
brew install tmux
ubuntu版本下直接apt-get安装centos
sudo apt-get install tmux
centos7版本下直接yum安装缓存
yum install -y tmux ```sh centos6版本须要编译安装 ```sh yum install libevent libevent-devel ncurses-devel tar -zvxf tmux-2.3.tar.gz # (提早下载:wget https://github.com/tmux/tmux/releases/download/2.3/tmux-2.3.tar.gz) cd tmux-2.3 ./configure make && make install
#启动新session: $ tmux [new -s 会话名 -n 窗口名] #恢复session: $ tmux at [-t 会话名] #列出全部sessions: $ tmux ls #关闭session: $ tmux kill-session -t 会话名 #关闭整个tmux服务器: $ tmux kill-server
所谓内部命令,就是进入Tmux后,并按下前缀键后的命令,通常前缀键为Ctrl+b. 虽然ctrl和b离得很远可是不建议改前缀键,由于别的键也不见得方便好记不冲突。仍是记忆默认的比较可靠。服务器
前缀 | 指令 | 描述 |
---|---|---|
Ctrl+b | ? | 显示快捷键帮助文档 |
Ctrl+b | d | 断开当前会话 |
Ctrl+b | D | 选择要断开的会话 |
Ctrl+b | Ctrl+z | 挂起当前会话 |
Ctrl+b | r | 强制重载当前会话 |
Ctrl+b | s | 显示会话列表用于选择并切换 |
Ctrl+b | : | 进入命令行模式,此时可直接输入ls等命令 |
Ctrl+b | [ | 进入复制模式,按q退出 |
Ctrl+b | ] | 粘贴复制模式中复制的文本 |
Ctrl+b | ~ | 列出提示信息缓存 |
前缀 | 指令 | 描述 |
---|---|---|
Ctrl+b | c | 新建窗口 |
Ctrl+b | & | 关闭当前窗口 |
Ctrl+b | 0~9 | 切换到指定窗口 |
Ctrl+b | p | 切换到上一窗口 |
Ctrl+b | n | 切换到下一窗口 |
Ctrl+b | w | 打开窗口列表,用于且切换窗口 |
Ctrl+b | , | 重命名当前窗口 |
Ctrl+b | . | 修改当前窗口编号(适用于窗口从新排序) |
Ctrl+b | f | 快速定位到窗口(输入关键字匹配窗口名称) |
前缀 | 指令 | 描述 |
---|---|---|
Ctrl+b | " | 当前面板上下一分为二,下侧新建面板 |
Ctrl+b | % | 当前面板左右一分为二,右侧新建面板 |
Ctrl+b | x | 关闭当前面板(关闭前需输入y or n确认) |
Ctrl+b | z | 最大化当前面板,再重复一次按键后恢复正常(v1.8版本新增) |
Ctrl+b | ! | 将当前面板移动到新的窗口打开(原窗口中存在两个及以上面板有效) |
Ctrl+b | ; | 切换到最后一次使用的面板 |
Ctrl+b | q | 显示面板编号,在编号消失前输入对应的数字可切换到相应的面板 |
Ctrl+b | { | 向前置换当前面板 |
Ctrl+b | } | 向后置换当前面板 |
Ctrl+b | Ctrl+o | 顺时针旋转当前窗口中的全部面板 |
Ctrl+b | 方向键 | 移动光标切换面板 |
Ctrl+b | o | 选择下一面板 |
Ctrl+b | 空格键 | 在自带的面板布局中循环切换 |
Ctrl+b | Alt+方向键 | 以5个单元格为单位调整当前面板边缘 |
Ctrl+b | Ctrl+方向键 | 以1个单元格为单位调整当前面板边缘(Mac下 |
Ctrl+b | t | 显示时钟 |
$ git clone git@github.com:zuorn/tmux-config.git $ cp tmux-config/.tmux.conf ~/.tmux.conf
重启 tmux restart tmux
或者 在 tmux 窗口中,先按下 Ctrl+b
指令前缀,而后按下系统指令:,进入到命令模式后输入 source-file ~/.tmux.conf
,回车后生效。
可根据本身的喜爱来设置,如若要启用,取消注释便可。
#set -g prefix C-f # #unbind C-f # C-b 即 Ctrl+b 键,unbind 意味着解除绑定 #bind C-f send-prefix # 绑定 Ctrl+f 为新的指令前缀 # 从tmux v1.6版起,支持设置第二个指令前缀 #set-option -g prefix2 ` # 设置一个不经常使用的`键做为指令前缀,按键更快些
bind r source-file ~/.tmux.conf \; display-message "Config reloaded.."
# 老版本: #setw -g mode-mouse on # 支持鼠标选取文本等 #setw -g mouse-resize-pane on # 支持鼠标拖动调整面板的大小(经过拖动面板间的分割线) #setw -g mouse-select-pane on # 支持鼠标选中并切换面板 #setw -g mouse-select-window on # 支持鼠标选中并切换窗口(经过点击状态栏窗口名称) # v2.1及以上的版本 set-option -g mouse on
unbind '"' bind - splitw -v -c '#{pane_current_path}' # 垂直方向新增面板,默认进入当前目录 unbind % bind = splitw -h -c '#{pane_current_path}' # 水平方向新增面板,默认进入当前目录
绑定Ctrl+hjkl键为面板上下左右调整边缘的快捷指令
bind -r ^k resizep -U 10 # 绑定Ctrl+k为往↑调整面板边缘10个单元格 bind -r ^j resizep -D 10 # 绑定Ctrl+j为往↓调整面板边缘10个单元格 bind -r ^h resizep -L 10 # 绑定Ctrl+h为往←调整面板边缘10个单元格 bind -r ^l resizep -R 10 # 绑定Ctrl+l为往→调整面板边缘10个单元格
setw -g mode-keys vi # 开启vi风格后,支持vi的C-d、C-u、hjkl等快捷键
bind -t vi-copy v begin-selection # 绑定v键为开始选择文本 bind -t vi-copy y copy-selection # 绑定y键为复制选中文本 bind p pasteb # 绑定p键为粘贴文本(p键默认用于进入上一个窗口,不建议覆盖)
set -g base-index 1 # 设置窗口的起始下标为1 set -g pane-base-index 1 # 设置面板的起始下标为1
set -g status-utf8 on # 状态栏支持utf8 set -g status-interval 1 # 状态栏刷新时间 set -g status-justify left # 状态栏列表左对齐 setw -g monitor-activity on # 非当前窗口有内容更新时在状态栏通知 set -wg window-status-format " #I #W " # 状态栏窗口名称格式 set -wg window-status-current-format " #I:#W#F " # 状态栏当前窗口名称格式(#I:序号,#w:窗口名称,#F:间隔符) set -wg window-status-separator "" # 状态栏窗口名称之间的间隔
这个主要是因为Tmux的后台缓存机制形成的。我就犯了个大错误:甚至删了Tmux、重装Tmux、重启电脑,都没达成。
Tmux会有一个叫Tmux-server的东西。只要把它kill,重启tmux就OK了:
tmux kill-server -a