tmux常用命令

Endless_daydream Lv4

基本思想

工作流

服务server > 会话session > 窗口window > 窗格pane

首次使用tmux命令会启动一个server,之后所有工作都是和这个server交流。

窗口window是一个tab页面,这个页面可以分成好几个不同的格子pane。需要分屏看的东西就在一个window中完成。注意,每个pane新打开时都会单开一个shell,各shell相互独立。

一个window中的pane可以有多种不同的布局,可以临时最大化再缩小,可以轮换、移动布局。你可以形成一个习惯的窗口布局模式,例如左半屏放代码,右边上半屏放笔记/文本文档,下半屏调试/运行。

当你需要临时去打开某个东西,比如看看某个依赖的库的问题时,肯定不希望破坏现在的打码布局。你可以新开一个window来完成。

所以带着不同的短期的目的,你可以形成好几种习惯的布局:敲代码的、查找资料的、改配置的…

而这些短期目的都属于同一件工作中的内容,对应了多个window同属于一个session。

因此当临时接到和正在进行的事情无关的新工作时,适合打开一个新的session来处理。

以上是我对tmux工作模式的理解。

复制模式

tmux中,除了可以当成普通shell使用的正常模式之外,还有一个用于浏览、复制终端输出的复制模式copy mode。

这个模式下可以用emacs或者vi的方式浏览shell历史输出,选择复制,粘贴。这一定程度上解决了终端输出不能直接copy的问题。

具体操作的介绍留到后面。

优势

ssh连接到远程服务器上时,tmux的server只要不关闭,那么断开连接后明天再连接可以接着之前的进度做,所有布局都保持原样。

安装

1
sudo apt install tmux

tmux是命令行工具,在shell中使用。

tmux中任何一个窗格都是一个独立的shell。

命令

约定:

本小节的注释和说明中

shell指启动tmux的外部shell

tmux指tmux内打开的shell

启动:

1
2
tmux # 在shell使用,打开一个匿名窗口,若未启动服务器,启动一个
tmux new -s window1 # shell或tmux中使用,新建并转到一个名为window1的窗口

暂停会话:

1
2
# 在tmux中使用,暂停会话,退出到shell界面
tmux detach

停止会话:

1
2
3
4
# 使用exit或快捷键C-d等关闭shell的命令,只会关闭当前窗格(pane),这种方法需要一个个关闭所有pane
tmux kill-session -t session2 # 关闭名为session2的会话
tmux kill-session -a # 关闭除当前以外所有会话
tmux kill-server # 关闭服务器,即关闭所有会话,包括当前的

恢复会话:

1
2
3
tmux attach # 在shell使用,有多个会话默认进入第一个
tmux a # 缩写
tmux a -t session1 # 进入名为session1的会话

查看会话:

1
2
tmux list-session # 显示所有会话
tmux ls # 缩写

以上命令中,跟在tmux后面的第一个单词就是tmux内置指令。

更多tmux指令见 man tmux

基础快捷键

输入上面的指令太慢了,快捷键拯救一切。

快捷键本质上是调用tmux指令。这留下了自定义快捷键配置的伏笔。个性化配置可参考我的tmux配置

下面介绍tmux的默认配置。

以下快捷键默认先按prefix键,这个键tmux默认设置是Ctrl-b

基本功能:

prefix + d :暂停会话,等同于tmux detach

会话(session) 窗口(window) 窗格(pane)
切换上一个 ( p ; 切换到最近一次的窗格
切换下一个 ) n o
其他切换 0..9:根据数字切换
会话(session) 窗口(window) 窗格(pane)
新建 :new c %:垂直分割 ":水平分割
重命名 $ , -
查找 s:列出所有 f -
关闭 d:分离当前会话 &:关闭当前窗口 x

注:

  1. :new 就是直接输入tmux命令 tmux new
  2. session没有关闭快捷键,这是一种安全手段。因为一般一个工作流程用一个session,不会轻易关闭。

窗格(pane)是工作中接触最多的,配置了更多快捷键:

z 最大化/正常大小 切换。
{ 与上一个窗格交换位置
} 与下一个窗格交换位置
! 将当前窗格(pane)拆分为独立窗口(window)
<space> 改变布局模式。
<C-o> 轮换窗格布局:0号窗格移到最后一个,其余前移。焦点保持在当前窗格。
<M-o> 轮换窗格布局:轮换方向与<C-o>相反。焦点保持在当前窗格。
<C-方向键> 调整窗格大小。

更多快捷键帮助:

阅读man tmux,就在前几页列出了所有默认快捷键配置。

使用中可以prefix ?查看其中的一些

复制模式(copy mode)

prefix + [ 进入复制模式
<space> 空格 开始选择
<BS> 回车 将选中内容复制进剪贴板
prefix + ] 将剪贴板内容粘贴到当前位置

复制模式默认用emacs移动方式,可以修改为vi模式。详见个人tmux配置

注意:是复制到tmux内部的buffer,不是系统剪贴板。

  • Title: tmux常用命令
  • Author: Endless_daydream
  • Created at : 2024-03-21 21:55:16
  • Updated at : 2024-04-06 16:01:48
  • Link: https://endless_daydream.gitee.io/2024/03/21/linux/tmux常用命令/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments