linux tmux的经验总结

2023-11-15

背景

linux下工作环境,经常见到打开几十个终端,而且不舍得关闭的情况。即使redhat支持终端标签页,redhat支持多个工作区;但仍显得十分混乱。
终端的layout布局位置,不能保存。为了保持操作环境的整洁,经常出现关闭后又一一还原打开的情况。
于是,需要一个可以后台维持的终端工具(这个工具,就是tmux),而且可以存储加载终端的layout布局位置;这样就可以随时调取/隐藏(tmux叫attach/detach),得到期望的并且是当前唯一的终端界面。

另外,网上说,tmux也支持ssh登录界面的保存;这相当于实现了一个功能:一键打开n个ssh操作终端。

主要操作实现

安装

参考:
Tmux 速成教程:技巧和调整
http://blog.jobbole.com/87584/

概念了解

  • session(类似一个针对终端的project name)
  • window(类似终端的标签页)
  • pane(终端的分屏,这个feature挺重要的)
  • 复制模式(因为不追求丢弃鼠标的全键盘操作,所以不细看tmux这部分内容了;后来体验几天发现,复制模式还是有必要了解,依靠鼠标,一些操作无法实现)
  • tmux最新版[当前使用的是tmux 2.5版本]和老版本的命令,是有区别的,所以百度的很多命令是不适用的。

快捷键

首先,默认终端里,输入tmux,就进入了tmux的界面;tmux的界面与默认终端界面是一致的。只有进入tmux界面,才能使用tmux的快捷键;虽然,默认终端下,也支持tmux操作,但没有快捷键支持啊。

快捷键是可以定制的。

常用快捷键/命令需求 描述
开始tmux 终端命令:tmux
ctrl+b prefix,命令的前缀
新建一个session(会话) 终端命令:tmux new -s projectxxx
脱离detach当前session ctrl+b d
加入attach一个session 终端命令:tmux attach -t projectxxx
查看tmux后台的session 终端命令:tmux ls
关闭一个session tmux里直接exit,或者终端命令:tmux kill-session -t projectxxx
新建一个window ctrl+b c
跳转至windows #1 ctrl+b 1
垂直分屏 ctrl+b %
水平分屏 ctrl+b “
关闭某个分屏 直接exit即可,或者ctrl+b x
分屏间的光标移动 ctrl+b 上下左右按键

参考:
Tmux常用快捷键以及我会常到的一些问题汇总 - piperck - 博客园
http://www.cnblogs.com/piperck/p/4992159.html

tmux重启后恢复终端layout界面的方法

注意:tmux是不支持重启后恢复终端layout界面的。只要不重启,tmux是一直后台执行的。
当然,我需要tmux在重启后,仍有恢复终端layout的能力。方法参考:
自动给tmux现场做备胎
https://segmentfault.com/a/1190000006232298

唯一需要补充的就是,tmux 插件的安装,ctrl+b r之后,没有任何信息提示,等插件安装完成后,才会有安装已完成的信息。
另外,插件也可以一个个手动安装,也不麻烦。

功能 描述
保存tmux的设置环境 ctrl+b ctrl+s
加载tmux的最新设置环境 ctrl+b ctrl+r

如果有多个用户,比如admin/qilei等

单独一个tmux,打开多用户的终端,是没有问题。只不过保存恢复的操作,会有问题。解决办法如下:

  1. 先终端进入期望用户;然后再执行tmux。
  2. tmux的配置目录,需要复制到各个用户主目录里。

新建windows或者pane(分屏),保留目录路径

bind c new-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind " split-window -c "#{pane_current_path}"

复制模式

Ctrl+b [
进入复制模式,空格标记复制开始,回车结束复制。
同样,适用于终端上下屏幕的移动浏览。按q,就退出复制模式。

Ctrl+b ]
粘贴最后一个缓冲区内容

~/.tmux.conf里增加下句,使复制模式类似vi操作
setw -g mode-keys vi
为了更适应vi操作,

bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

unbind-key -T copy-mode-vi v
bind-key -T copy-mode-vi 'v' send -X begin-selection # Begin selection in copy mode.
bind-key -T copy-mode-vi 'C-v' send -X rectangle-toggle # Begin selection in copy mode.
bind-key -T copy-mode-vi 'y' send -X copy-selection # Yank selection in copy mode.

支持鼠标模式

set -g mouse on

这样就可以支持鼠标滚轮/pagedown等普通操作了。

窗口列表居中(否则session和windows名称会重叠)

set -g status-justify centre

其它

刚刚使用,还未考虑更细节的东西。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux tmux的经验总结 的相关文章

  • Scrapy FakeUserAgentError:获取浏览器时发生错误

    我使用 Scrapy FakeUserAgent 并在我的 Linux 服务器上不断收到此错误 Traceback most recent call last File usr local lib64 python2 7 site pack
  • 如何调用位于其他目录的Makefile?

    我正在尝试这样做 我想打电话给 make Makefile存在于其他目录中 abc可以使用位于不同目录中的 shell 脚本的路径 我该怎么做呢 由于 shell 脚本不允许我cd进入Makefile目录并执行make 我怎样才能编写she
  • 将数组传递给函数名称冲突

    Specs GNU bash 版本 3 1 17 无法升级 Premise 我一直在摆弄数组 我想知道是否有任何方法可以让函数的本地变量与所述函数外部的数组同名 Example 在下面的示例中 我将尝试显示该问题 Working bin b
  • 操作系统什么时候清除进程的内存

    进程在某些操作系统上成功或异常终止 操作系统何时决定擦除分配给该进程的内存 数据 代码等 在退出时或当它想为新进程分配内存时 这个清除内存分配过程在所有操作系统 winXP Win7 linux Mac 上都相同吗 据我了解 页表具有该进程
  • Inotify linux 监视子目录

    是否可以以这种模式监视目录 storage data usernames Download gt storage data Download 我需要监视每个用户的下载文件夹中是否进行了更改 也许我需要创建所有路径的列表 将其放入数组中 并在
  • 在 Ubuntu 16.04 上找不到 printf.c

    我最近切换到Ubuntu 16 04 我在用vscode作为 Ubuntu 上的 IDE 我配置了其他语言 但我无法做到这一点C C 我创建c cpp properties json launch json tasks json 当我开始编
  • 适用于 KDE 和 Gnome 的 Gui [重复]

    这个问题在这里已经有答案了 我想为一个现在是 CLI 的应用程序编写一个 gui 它需要在 KDE 和 Gnome DE 中 看起来不错 充分利用用户的外观设置 如果我选择 Qt 或 GTK 我能够做到这一点吗 它们与两个 DE 集成良好吗
  • 如何查找连接到 AF_INET 套接字的客户端的 UID?

    有什么方法或类似的东西ucred for AF UNIX如果是AF INET插座 TCP在我的例子中 找出连接到我的套接字的客户端的UID 还有 proc net tcp但它显示了UID of the creator插座的而不是连接的cli
  • Docker:处理 tar 文件时出错(退出状态 1):设置枢轴目录时出错:不是目录

    我是 Docker 新手 不知道是什么原因导致此错误或如何诊断它 任何有关此问题的具体帮助或有关首先检查何处以诊断此类问题的提示将不胜感激 我的 Dockerfile FROM java 8 Install maven RUN apt ge
  • 没有可用的符号表信息

    我正在测试第三方的库 它崩溃了 当我想查看崩溃的原因时 我的 gdb 告诉我没有可用的调试符号 Program received signal SIGSEGV Segmentation fault Switching to Thread 0
  • 如何模拟ARM处理器运行环境并加载Linux内核模块?

    我尝试加载我的vmlinux into gdb并使用 ARM 内核模拟器 但我不明白为什么我会得到Undefined target command sim 这是外壳输出 arm eabi gdb vmlinux GNU gdb GDB 7
  • Godaddy 托管上的 CakePHP 控制台

    我一直在努力让我的 CakePHP 网站在 Godaddy 网格托管 帐户上运行 我的蛋糕应用程序设置是从帐户的子目录托管的 并且可以通过子域访问 我必须调整我的 htaccess 文件才能使其正常工作 现在我需要让 CakePHP 控制台
  • ansible 重新启动 2.1.1.0 失败

    我一直在尝试创建一个非常简单的 Ansible 剧本 它将重新启动服务器并等待它回来 我过去在 Ansible 1 9 上有一个可以运行的 但我最近升级到 2 1 1 0 并且失败了 我正在重新启动的主机名为 idm IP 为 192 16
  • 在 Mac OS X 上构建 Linux 内核

    我正在做一个修改Linux内核的项目 我有一台桌面 Linux 机器 在上面构建内核没有问题 不过 我要去旅行 我想在途中工作 我只有一台 MacBook 当我尝试构建 Linux 内核时 它抱怨说elf h was not found 我
  • 何时使用 pthread 条件变量?

    线程问题 看来 只有在其他线程调用 pthread cond notify 之前调用 pthread cond wait 时 条件变量才起作用 如果在等待之前发生通知 那么等待将被卡住 我的问题是 什么时候应该使用条件变量 调度程序可以抢占
  • 为什么我收到“无法进行二进制日志记录”的信息。在我的 MySQL 服务器上?

    当我今天启动 MySQL 服务器并尝试使用以下命令进行一些更改时用于 MySQL 的 Toad http www quest com toad for mysql 我收到此消息 MySQL 数据库错误 无法进行二进制日志记录 消息 交易级别
  • 从 PL/SQL 调用 shell 脚本,但 shell 以 grid 用户而非 oracle 身份执行

    我正在尝试使用 Runtime getRuntime exec 从 Oracle 数据库内部执行 shell 脚本 在 Red Hat 5 5 上运行的 Oracle 11 2 0 4 EE CREATE OR REPLACE proced
  • Elasticsearch 无法写入日志文件

    我想激活 elasticsearch 的日志 当我运行 elasticsearch 二进制文件时 我意识到我在日志记录方面遇到问题 无法加载配置 这是输出 sudo usr share elasticsearch bin elasticse
  • awk 子串单个字符

    这是columns txt aaa bbb 3 ccc ddd 2 eee fff 1 3 3 g 3 hhh i jjj 3 kkk ll 3 mm nn oo 3 我可以找到第二列以 b 开头的行 awk if substr 2 1 1
  • Android:ANT 构建失败,并显示 google-play-services-lib:“解析为没有项目的 project.properties 文件的路径”

    我正在尝试使用 ANT 构建我的应用程序 但在包含 google play services lib 库项目后 我惨遭失败 Step 1 我在 project properties 文件中设置了对库项目的引用 android library

随机推荐

  • Discuz论坛添加一行即可保留安装插件和模板里面的xml文件 可以无限制安装了

    请首先打开 config config global php 文件 在文件结尾添加以下代码开启插件设计者模式 config plugindeveloper 1
  • Ubuntu 系统下如何远程访问 Windows 桌面 ?

    你一定听说过 Windows 应用程序远程桌面连接 该应用程序系统自带不用安装 并允许您远程访问另一台 PC 或服务器 它使用远程桌面协议建立远程桌面连接会话 一些 Linux 发行版可能会提供 RDP 客户端来连接到 Windows 系统
  • 最近发现一个爬虫开源项目weixin_crawler

    最近发现一个爬虫开源项目weixin crawler weixin crawler weixin crawler是一款使用Scrapy Flask Echarts Elasticsearch等实现的微信公众号文章爬虫 自带分析报告和全文检索
  • Qt Xlsx的基本使用

    前言 在很多时候 我们需要将数据导出 之前我是将数据表导出为CSV格式 CSV文件虽然可以用Excel打开 但相对于真正的Xlsx文件 还是有许多不足的 偶然之间 发现了QtXlsx这个第三方库 1 QtXlsx官网对QtXlsx的介绍 Q
  • 死锁的排查工具有哪些?

    死锁是多线程编程中常见的问题 可以使用多种工具和技术来排查和分析死锁问题 以下是一些常用的死锁排查工具和方法 JConsole 和 JVisualVM 这些是Java自带的监控工具 可以用于监视Java应用程序的运行状态 通过查看线程状态和
  • matlab 集成学习,集成学习

    假设你去随机问很多人一个很复杂的问题 然后把它们的答案合并起来 通常情况下你会发现这个合并的答案比一个专家的答案要好 这就叫做群体智慧 同样的 如果你合并了一组分类器的预测 像分类或者回归 你也会得到一个比单一分类器更好的预测结果 这一组分
  • 给定一个仅包含小写字母的字符串,求它的最长回文子串的长度。

    include
  • 2轴直线插补程序分析

    1 数据采样插补法 在CNC系统中较广泛采用的另一种插补计算方法即所谓数据采样插补法 或称为时间分割法 它尤其适合于闭环和半闭环以直流或交流电机为执行机构的位置采样控制系统 这种方法是把加工一段直线或圆弧的整段时间细分为许多相等的时间间隔
  • 计算机视觉智能中医(六):基于曲线拟合舌体胖瘦的自动分析

    返回至系列文章导航博客 文章目录 1 简介 2 原理讲解 多项式曲线拟合 2 1 舌体曲线拟合参数与形状的关系 2 2 胖瘦指数定义 3 具体实现过程 4 代码实现 4 1 contour to py 4 2 outline cut py
  • 生成项目树形结构

    当你写博客或者项目描述的时候 想要展示项目的树形结构 怎么办呢 手写 程序员是不可能手写的 win R输入cmd进入dos 输入命令 tree 项目根目录 gt 生成的树形结构文件保存地址 比如 tree E workspace flink
  • ORB-SLAM2:基于可识别特征的自主导航与地图构建

    目录 ORB SLAM2 基于可识别特征的自主导航与地图构建 简介 地图 A 地图特征点或3D ORB B 关键帧 C 可视化图像 位置识别 A 图像识别数据库 B 高效优化的ORB匹配 C 视觉一致性 自主导航追踪 A ORB特征获取 B
  • Vue中使用element-ui使用表单提交时间

    在Vue中使用element ui组件的表单提交 想要上传笔记创建的时间 出现的问题 element ui的源码
  • SQLPub免费的MySQL数据库

    SQLPub免费的MySQL数据库 提供最新版本 甚至是开发者版本的 MySQL 服务器测试服务 您可以轻易地 注册免费账号 测试您的应用 例如 您可以测试在MySQL版本升级后您的应用是否依然能够正常运行 sqlpub com 也是让您学
  • javaWeb数据库连接池,过滤器和监听器

    数据库连接池 JDBC 1 什么是数据库连接池 是一个数据库的工具 能够分配 管理和释放数据库连接 它允许应用程序重复使用一个现有的数据库连接 而不是再重新建立一个 常见数据库连接池 C3P0 是一个开放源代码的JDBC连接池 它在lib目
  • sd模型分类

    标题模型主要分为四类 Checkpoint LoRA Textual Inversion Hypernetwork 分别对应 4 种不同的训练方式 Checkpoint 通过 Dreambooth 训练方式得到的大模型 特点是出图效果好 但
  • 【MySQL】使用Visio绘制E-R图

    使用Visio绘制E R图 1 创建项目 文件 新建 常规 基本框图 2 调整页面方向 纵向或横向 文件 页面设置 3 准备E R图的三个基本形状 实体用矩形 关系用菱形 属性用椭圆 4 绘制E R图 双击形状后可以在形状中编辑文字 通过绘
  • Cursor!!!GPT-4帮我写代码

    首先介绍一款产品 cursor 官网 https www cursor so IDE作者 https twitter com amanrsanger 目前为止应该是第一个免费能够使用GPT4工作的软件 看作者的Twitter 他说自己提前向
  • 由于找不到d3dx9_43.dll无法继续执行此代码怎么修复?这个三个方法可以解决问题

    在运行游戏 软件的时候 计算机提示 由于找不到d3dx9 43 dll无法继续执行此代码 是怎么回事 其实d3dx9 43 dll是Windows操作系统下的DirectX9的一个组件 而DirectX是Windows系统支持游戏和显卡游戏
  • 【Spring Boot 源码学习】OnClassCondition 详解

    Spring Boot 源码学习系列 OnClassCondition 详解 引言 往期内容 主要内容 1 getOutcomes 方法 2 多处理器拆分处理 3 StandardOutcomesResolver 内部类 4 getMatc
  • linux tmux的经验总结

    背景 主要操作实现 安装 概念了解 快捷键 tmux重启后恢复终端layout界面的方法 如果有多个用户比如adminqilei等 新建windows或者pane分屏保留目录路径 复制模式 支持鼠标模式 窗口列表居中否则session和wi