tmux常用命令
基本思想
工作流
服务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 | tmux # 在shell使用,打开一个匿名窗口,若未启动服务器,启动一个 |
暂停会话:
1 | # 在tmux中使用,暂停会话,退出到shell界面 |
停止会话:
1 | # 使用exit或快捷键C-d等关闭shell的命令,只会关闭当前窗格(pane),这种方法需要一个个关闭所有pane |
恢复会话:
1 | tmux attach # 在shell使用,有多个会话默认进入第一个 |
查看会话:
1 | tmux list-session # 显示所有会话 |
以上命令中,跟在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 |
注:
:new
就是直接输入tmux命令tmux new
- 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.