如果说有什么工具可以用相见恨晚 来形容的话,Tmux 算一个。

Tmuxs 是一款优秀的终端复用工具,使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“浪费”多余的终端来连接这台远程主机;

功能

  • 提供了强劲的、易于使用的命令行界面。
  • 可横向和纵向分割窗口。
  • 窗格可以自由移动和调整大小,或直接利用四个预设布局之一。
  • 支持 UTF-8 编码及 256 色终端。
  • 可在多个缓冲区进行复制和粘贴。
  • 可通过交互式菜单来选择窗口、会话及客户端。
  • 支持跨窗口搜索。
  • 支持自动及手动锁定窗口。
  • 可以自由配置绑定快捷键。

Tmux 重要概念

使用 Tmux 的时候千万不要去背指令,所有的指令都可以在 .tmux.conf 配置文件中绑定自己顺手的快捷键,也可以配置开启鼠标。

这个是我的配置文件:https://github.com/zuorn/tmux.conf

在Tmux逻辑中,需要分清楚Server > Session > Window > Pane这个大小和层级顺序是极其重要的,直接关系到工作效率:

  • Server:是整个tmux的后台服务。有时候更改配置不生效,就要使用tmux kill-server来重启tmux。
  • Session:是tmux的所有会话。我之前就错把这个session当成窗口用,造成了很多不便里。一般只要保存一个session就足够了。
  • Window:相当于一个工作区,包含很多分屏,可以针对每种任务分一个Window。如下载一个Window,编程一个window。
  • Pane:是在Window里面的小分屏。最常用也最好用

了解了这个逻辑后,整个Tmux的使用和配置也就清晰了。
(ps:下面这种方便好看的Status bar状态栏,显示的是windows,而不是sessions)

安装

在 Mac OS 中,通过 brew 安装

brew install tmux

ubuntu版本下直接apt-get安装

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

Tmux 常用命令

#启动新session:
$ tmux [new -s 会话名 -n 窗口名]#恢复session:
$ tmux at [-t 会话名]#列出所有sessions:
$ tmux ls#关闭session:
$ tmux kill-session -t 会话名#关闭整个tmux服务器:
$ tmux kill-server

Tmux 常用内部命令

所谓内部命令,就是进入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 ~ 列出提示信息缓存

窗口(window)指令:

前缀 指令 描述
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 快速定位到窗口(输入关键字匹配窗口名称)

面板(pane)指令:

前缀 指令 描述
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 ` # 设置一个不常用的`键作为指令前缀,按键更快些

添加加载配置文件快捷指令 r

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个单元格

复制模式

复制模式更改为 vi 风格

setw -g mode-keys vi # 开启vi风格后,支持vi的C-d、C-u、hjkl等快捷键

复制模式向 vi 靠拢

  • v 开始选择文本
  • y 复制选中文本
  • p 粘贴文本
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、重启电脑,都没达成。
Tmux会有一个叫Tmux-server的东西。只要把它kill,重启tmux就OK了:

tmux kill-server -a

参考:

  • 官方文档
  • https://www.cnblogs.com/congbo/archive/2012/08/30/2649420.html
  • Tmux 使用手册
  • Tmux的超绝便利 (基础篇)

转载于:https://www.cnblogs.com/zuoruining/p/11074367.html

Tmux 配置:打造最适合自己的终端复用工具相关推荐

  1. Tmux终端复用工具小解

    一.什么是Tmux Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权.使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启 ...

  2. 远程服务器终端复用工具:tmux

    目录 面临的问题 tmux功能介绍 tmux安装 tmux复用终端 面临的问题 通常在本地电脑远程连接服务器,在服务器上下载一些东西或者训练模型,那么就要等命令执行结束才能停止与服务器的ssh连接,否 ...

  3. 如何配置一个极简舒适的终端环境:oh-my-zsh 和iterms配置

    研究了几天对于终端的配置,使得编写代码更方便并且美观极简.为了使用方便,可以一边看视频一边写代码,我使用iterms代替ac terminal作为工具.这些配置同样可以在ac terminal上使用. ...

  4. 树莓派4外置wifi天线_树莓派打造最强车载娱乐终端(1)音乐和WiFi

    开车跑长途的时候总觉得无聊,就会想起飞机上的娱乐终端,那么我们就来自己做一个吧! 这一系列文章里,我会按照功能划分,列出需要的软硬件,尽量做到互相独立,方便自由组合.今天我们先来实现最基本的音乐播放和 ...

  5. 终端复用命令行神器:tmux

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | spoock 来源 | https://tinyurl.com/y34djpar ...

  6. linux 控制终端卡,配置通过串口控制linux操作系统的终端

    开始之前,请确认机器有串口(com口, RS232接口),如果没有,那就没有办法达到通过串口控制机器的目的了.当然,也可以额外给机器安装一个带串口的 PCI 模块,然后想办法将模块驱动起来(内核默认能 ...

  7. Linux终端复用神器-tmux初探

    title: tmux-初探 Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权.使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其 ...

  8. macos 字体_巧用 iTerm2 zsh oh-my-zsh 打造炫酷的 MacOS 终端环境

    MacOS 系统自带的 Bash 虽然已经很强大,但是对于一些细节功能的支持并不完美,重点是对于一个颜控来说,原生 Bash 真的很丑--可塑性也不高.本文将使用 iTerm2 这款被各路大牛吹爆的 ...

  9. mac下 iterm+Zsh+Oh My Zsh+tmux 配置方案

    iterm2: iterm的一些优点: 兼容性好,远程服务器 vi 什么的低版本能很好兼容,Terminal 则会出问题 (我是长时间在服务器上混的人,但其实并没有这种感觉--) 支持 xterm-2 ...

最新文章

  1. python--二进制的用法
  2. java 扩展数据类型_005Java学习--数据类型及拓展
  3. 办公室自动化系统_RPA:办公自动化的下一站
  4. Java服务GC参数调优案例
  5. python预测股票价格tushare_用tushare对股票进行简单分析
  6. CC++中的qsort库函数
  7. 剑指offer0JZ81 调整数组顺序使奇数位于偶数前面(二)(C++,附思路)
  8. php charat,charAt(i) 函数
  9. github ssh 配置_Git多用户配置
  10. 安装Windows NT4.0
  11. Java Timer TimerTask示例
  12. 转:工具类之SpannableStringUtils(相信你会爱上它)
  13. BFD和NQA技术原理
  14. 相关系数显著性检验以及Python实例
  15. PCkit3.5烧写器直接上手使用方法
  16. python保存路径_Python模块的正确存放位置
  17. MySQL逻辑架构及工作流程
  18. 瀑布图有什么用?怎么画?
  19. CISCO路由器、交换机设备破解密码
  20. 【壮丽70年·奋斗新时代】宿州:从农业大市转身为“中国云都”

热门文章

  1. appium+python自动化-adb shell模拟点击事件(input tap)
  2. 大道至简 第二章 读后随笔
  3. Javascript对象扩展 - JsPoint类
  4. No ‘Access-Control-Allow-Origin‘ header is present on the requested resource.
  5. expec不管异常 try_JUnit测试异常
  6. 怎样识别一个人是否可交
  7. 5.1环绕声有什么不同
  8. 同学孩子上985大学,每月生活费5000元,大家认为合适吗?
  9. 赤小豆和红小豆有什么区别,哪种和薏米煮粥更好些?
  10. 想法越多越贫穷,赚钱的人,都是少想多干