我的tmux使用手册

基础概念

  • 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中使用的快捷键需要一个(前缀键)激活,默认为`ctrl+b`。

Session

  s     列出Session
  $     重命名Session
  d     断开Session

Window

  c     创建新的Window
  ,     重命名当前Window
  w     列出所有Window
  &     关闭Window
  n     选择下一个Window
  p     选择上一个Window
  0~9   切换到 0~9 对应的Window
  '<#index> 选择窗口编号超过 2 位数的窗口(比如 '10,代表切换到编号为 10 的窗口)

Pane

  %     创建一个竖直Pane
  "     创建一个水平Pane
  q     显示Pane的编号
  o     在Pane中切换
  {     与上一个Pane交换位置
  }     与下一个Pane交换位置
  z     切换Pane大小为整个Window
  !     显示当前Pane在新的Window中

Misc

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

拷贝

<prefix> [  进入复制模式
<prefix> ] 粘贴

移动光标到要复制的区域,移动光标时可用vim的搜索功能"/","?" 按空格键开始选择复制区域,选择完成后安enter键退出

配置

  • 生效方式:重启or使用<prefix> : + source-file /path/to/conf

  • 建议通过一个配置文件保存,方便管理:https://github.com/vimerzhao/dotfiles/blob/master/vimerzhao_tmux.conf[vimerzhao/dotfiles]

修改前缀

set -gu prefix2
unbind C-j
unbind C-b
set -g prefix C-j
bind C-j send-prefix

我比较喜欢用C-j

修改快捷键

unbind '"'
bind - splitw -v -c '#{pane_current_path}'
unbind %
bind | splitw -h -c '#{pane_current_path}'

平分面板的快捷键实在太偏僻了。

参考