Linux终端复用工具 tmux

 

简介

Terminal Multiplexer (From WIKIPEDIA) - A terminal multiplexer is a software application that can be used to multiplex several separate pseudoterminal-based login sessions inside a single terminal display, terminal emulator window, PC/workstation system console, or remote login session, or to detach and reattach sessions from a terminal.shell

Tmux 是 Linux 平台下一款 终端复用 的工具,其能够在单一的终端上实现多任务管理,经过简单的操做进行任务之间的切换,且任务的执行不受终端退出等意外状况的影响。vim

Session(会话)、Window(窗口)、Pane(窗格):tmux使用session来区分不一样的工做环境,一个session能够包含多个window,一个window能够被分割成多个pane服务器

安装与使用

sudo apt-get install tmux
  • 安装完成后,在终端输入 tmux 命令就能够进入tmux环境
  • 设置 tmux 随终端自启动:终端窗口右键 -> Profile Preferences -> Command -> 勾选 "Run a custom command instead of my shell" -> 在 Custom command 中填入 tmux

基本配置

  • 在 tmux 环境中,使用功能命令以前都须要一个前缀,默认为 Ctrl + b
  • 这两个键距离较远,操做起来不方面,能够在 tmux 的配置文件(~/.tmux.conf,若无此文件,需手动添加)中自定义前缀组合快捷键,如 Ctrl + a。
vim ~/.tmux.conf
1 # 解绑 Ctrl + b 快捷键
2 unbind C-b
3 
4 # 更换前缀快捷键为 Ctrl + a
5 set -g prefix C-a
  • 配置完 ~/.tmux.conf 后,重启 tmux 生效,或者进入命令行模式(前缀 + : ),输入:
source-file ~/.tmux.conf
  • 若不想每次每次配置完都用上述代码,可在配置文件中自定义快捷键,如 前缀 + r
1 # 将快捷键 r 设置为加载配置文件,并在状态栏显示“Config Reloaded”信息
2 bind-key r source-file ~/.tmux.conf \; display-message "Config Reloaded!"

快捷键与进阶配置

 Pane命令

1. 建立 panesession

  • 终端中输入 tmux 命令,默认建立了一个 session、一个 window 和一个 pane,此时还没达到终端复用的目的,需建立额外的 pane
  • 默认:前缀 + ” 建立垂直分割(上下)的 pane,前缀 + % 建立水平分割(左右)的 pane
  • 可在配置文件中自定义快捷键,如 前缀 + v 垂直分割,前缀 + h 水平分割
1 # 重定义分隔窗格快捷键
2 unbind '"'
3 unbind %
4 bind-key v split-window -h
5 bind-key h split-window -v

2. 切换 paneapp

  • 激活不一样 pane,即在 pane 间作切换,默认为:前缀 + 上下左右键

3. 关闭 panesocket

  • 方法一:在该 pane 中输入 exit 命令
  • 方法二:快捷键 前缀 + x
  • 方法三:快捷键 Ctrl + d

4. 全屏显示 paneide

  • 前缀 + z 的快捷键可以使当前 pane 全屏显示,再用一次 前缀 + z 可返回以前的状态

Window 命令

1. 建立 window工具

  • 前缀 + c 可建立一个 window,状态栏左侧会有提示符,表明不一样的 window

2. 切换 windowspa

  • 前缀 + p:切换至前一窗口
  • 前缀 + n:切换至后一窗口
  • 前缀 + 数字
  • 前缀 + l (L的小写): 在相邻的window切换
  • 前缀 + w: 列出当前 session 中全部 window,经过上下键切换

3. 关闭 window命令行

  • 前缀 + &,会给出提示是否关闭当前窗口,按下 y 确认便可

Session 命令

0. 原理

在 tmux 实现中,会话实际由 tmux 客户端( client )显示在屏幕上,而全部的会话均由一个惟一的 tmux 服务器( server )进行管理,当用户创建第一个 tmux 会话时,tmux server 即启动,而当全部的会话都被注销时,tmux server 则自动中止,从而退出 tmux。tmux client 和 server 均为独立的进程,它们之间经过一个位于 /tmp 目录下的 socket 进行交互。当用户从原始的终端经过 tmux 命令建立一个会话或从新 attach 一个会话时,tmux 即在当前终端下创建一个 tmux client,用于显示进入的 tmux 会话,当用户在 tmux 中进行会话切换时,实际是将当前的 tmux client 从新 attach 到新的会话中( 从而显示新的会话 ),而当用户选择 detach 当前会话时,实际是取消 tmux client 与当前会话的绑定( 从而再也不显示该会话 ),不管是上述哪种状况,实际上只是 tmux client 再也不显示某一个会话,而不是关闭会话,会话仍会在后台运行,由 tmux server 进行管理。当从 tmux 退出至原始的终端时,该终端下创建的 tmux client 即自动退出。

 

1. 建立 session

tmux new -s session_name [-n window_name] //建立并进入一个名为 session_name 的会话,其拥有一个名为 window_name 的窗口

2. 离开 session

  • 离开(detach)当前会话,回到 Shell 终端
    • 前缀 + d
    • 终端:tmux detach

3. 进入 session

tmux attach [-t session_name]  //进入一个名为 session_name 的会话,attch也能够用 a 或 at 代替
  • 若不指定参数 -t,默认进入用户最近离开的会话

4. 查询 session

  • Shell 终端环境中
    • tmux ls
  • tmux 会话环境中
    • 前缀 + s

5. 注销 session

  • 终端环境中
tmux kill-session -t session-name   //删除名为 session-name 的会话
tmux kill-server    //删除全部的会话
  • 会话环境中
    • 先进入命令行模式(前置 + :),再输入 kill-session [-t session_name]

6. 重命名 session

  • 终端环境中
tmux rename -t old_session_name  new_session_name
  • 会话环境中
    • 前缀 + $
相关文章
相关标签/搜索