结构

  • Session:用来概括一个任务,是一组窗口的集合。通过在任务开始前创建一个Session,在该Session中进行任务,之后通过断开Session来暂时中断任务,此时与任务相关的状态都会保存在这个Session,通过重新连接Session可以方便的继续未完成的任务。Session最大的作用就是持久的保存工作状态。
  • Window:单个窗口,一个Session可以包含多个Window。tmux中Window的概念与Chrome或Vim的Tab页类似。
  • Pane:单个Window可以进一步划分成小块的Pane,tmux中的Pane类似与Vim中使用split划分出的窗口。

操作

命令

tmux      - 创建一个不指定名字的Session
tmux new -s <session-name>  - 创建指定名字为<session-name>的Session

tmux ls   - 查询所有Session

tmux detach   - 断开Session(需要使用快捷键命令输入)

tmux a    - 快速连接所有Session中的第一个Session(`a`即`at`, `attach`)
tmux a -t <session-name>    - 重新连接Session

tmux kill-session -t <session-name>  - 关闭Session

快捷键

在tmux中使用的快捷键需要一个<prefix>(前缀键)激活,<prefix>默认为ctrl+b

  • Session

      s     列出Session
      $     重命名Session
      d     断开Session
      :new<CR>  new session
    
  • Window (tabs)

      c     创建新的Window
      ,     重命名当前Window
      w     列出所有Window
      &     关闭Window
      n     选择下一个Window
      p     选择上一个Window
      0~9   切换到 0~9 对应的Window
      '<#index> 选择窗口编号超过 2 位数的窗口(比如 '10,代表切换到编号为 10 的窗口)
      f     find window
      .     move window - prompted for a new number
      :movew<CR>  move window to the next unused number
    
  • Pane (splits)

      %     创建一个竖直Pane
      "     创建一个水平Pane
      q     显示Pane的编号
      o     在Pane中切换
      {     与上一个Pane交换位置
      }     与下一个Pane交换位置
      z     切换Pane大小为整个Window
      !     显示当前Pane在新的Window中
      x     kill pane
      ⍽     space - toggle between layouts
    
  • Misc

      ?     帮助信息
      t     显示时间
      :     命令输入
    

拷贝

<prefix> [ 进入复制模式
移动光标到要复制的区域,移动光标时可用vim的搜索功能"/","?"
按空格键开始选择复制区域
选择完成后按enter键退出
<prefix> ] 粘贴

配置

配置文件为~/.tmux.conf,我的配置文件

tmux set-option

  • 正常模式:
  • 命令模式:<prefix> :
  • 选择模式:<prefix> [

  • set-option -s 设置 sever option
  • set-option 设置 session option
  • set-window-option 设置 window option(setw, set -w)
  • set-option -g 设置全局 option

分享Session

当多个人同时登入一台主机,它们可以通过连接同一个Session来进行实时的共享。

插件

tmux-resurrect tmux-continuum tmux-yank