tmux系列:3、tmux窗口和窗格

tmux系列:3、tmux窗口和窗格


1. 创建新窗口

可以使用C-b c键绑定在附加的会话中创建一个新窗口,该绑定运行new-window命令。新窗口是在第一个可用的索引处创建的——因此第二个窗口的索引为1。新窗口成为会话的当前窗口。

如果窗口列表中有任何空白,它们将由新窗口填充。因此,如果有索引为0和2的窗口,下一个新窗口将作为索引1创建。

new-window命令有一些有用的标志,可以在命令提示符中使用:

  • -d标志创建窗口,但不使其成为当前窗口。
  • -n允许为新窗口指定一个名称。例如,使用命令提示符创建一个名为mynewwindow的窗口,而不将其设置为当前窗口:
:neww -dnmynewwindow
  • -t标志指定窗口的目标。命令目标有一个特殊的语法,但为了简单地使用新窗口,它仅仅提供一个窗口索引就足够了。这将在索引999创建一个窗口:
:neww -t999

在新窗口中运行的命令可以像new-session一样被赋予new-window。例如,创建一个运行top(1)的新窗口:

:neww top

2. 拆分窗口

窗格是通过分割窗口创建的。这是通过split-window命令完成的,该命令默认绑定到两个键:

  • C-b %将当前窗格水平分割成两个,产生两个相邻的窗格,一个在左边,一个在右边。
  • C-b "将当前的窗格垂直地分成两个,产生两个窗格,一个在另一个之上。

每次将一个窗格划分为两个时,每个窗格都可以使用相同的键绑定再次划分,直到窗格变得太小为止。

Split-window有几个有用的标志:

  • -h做水平分割,-v做垂直分割。
  • -d不会将活动窗格更改为新创建的窗格。
  • -f使一个新窗格跨越整个窗口的宽度或高度,而不是被限制为窗格被分割的大小。
  • -b将新窗格放在被分割窗格的左侧或上方,而不是右侧或下方。

在新窗格中运行的命令可以像new-sessionnew-window一样被赋予split-window

3. 切换窗口

有几个键绑定可以改变会话的当前窗口:

  • C-b 0变成窗口0,C-b 1变成窗口1,直到窗口C-b 9变成窗口9。
  • C-b '提示输入一个窗口索引并更改该窗口。
  • C-b n按编号改变到窗口列表中的下一个窗口。所以在窗口1中按C-b n会变成窗口2如果它存在的话。
  • C-b p按编号改变窗口列表中的上一个窗口。
  • C-b l更改到最后一个窗口,这是最后一个窗口,当前窗口在现在的窗口之前。

这些都是select-window命令的变体。

4. 切换活动窗格

通过这些键绑定,活动窗格可以在窗口中的窗格之间更改:

  • C-b upC-b downC-b leftC-b right更改为活动窗格的上,下,左或右窗格。这些键环绕着窗口,所以按下C-b down在底部的窗格上就会变成顶部的窗格。
  • C-b q会在短时间内将方格号码和尺寸打印在方格的顶部。在数字键消失之前按下其中一个会将活动窗格更改为所选窗格,因此C-b q 1将更改为窗格编号1。
  • C-b -o按窗格编号移动到下一个窗格,C-b C-o与活动窗格交换该窗格,因此它们在窗口中交换位置和大小。

它们使用“选择窗格”和“显示窗格”命令。

窗格的编号不是固定的,相反,窗格是根据其在窗口中的位置进行编号的,所以如果数字为0的窗格与数字为1的窗格交换,则数字和窗格本身都会被交换。

在这里插入图片描述

5. 选择会话、窗口和窗格

Tmux包括一种模式,可以从树中选择会话、窗口或窗格,这被称为树模式。它可以用来浏览会话,窗口和窗格;若要更改所附的会话、当前窗口或活动窗格;杀死会话、窗口和窗格;或者通过标记将一个命令同时应用于多个。

有两个键绑定可以进入树模式:C-b s开始只显示会话,并选择了附加的会话;C-b w以扩展会话开始,因此显示窗口,并选择所附会话中的当前窗口。

树模式将窗口分成两个部分:上半部分是会话、窗口和窗格的树,下半部分是每个窗格中光标周围区域的预览。对于会话,预览会在尽可能多的窗口中显示活动窗格;对于Windows,尽可能多的窗格将适合;对于窗格,只选择窗格。

控制树模式的键不需要前缀。列表可以用上键和下键导航。输入对所选项目的更改(它将成为附加的会话、当前窗口或活动窗格)并退出模式。如果可能,右展开该项会话展开以显示其窗口,窗口展开以显示其窗格。左侧折叠项目以隐藏任何窗口或窗格。O改变项目的顺序,q退出树模式。

树中的项目通过按下t来标记,再按下t来取消标记。带标签的项目以粗体显示,名称后面有*。所有带标签的物品可以通过按t来取消标签,带标签的物品可以通过按X来一起被杀死,或者通过按:来获得提示。

树中的每个项目在行开始的方括号中有作为快捷键。按下此键将立即选择该项目(就像它已被选中并按下Enter键一样)。前10项是键0到9,之后使用键M-a到M-z。

这是一个不按前缀键的树模式下可用的键列表:

KeyFunction
Enter更改附加的会话、当前窗口或活动窗格
Up选中上一项
Down选中下一项
Right扩大项
Left缩减项
x杀死选中的项
X杀死标记的项目
<滚动预览左侧内容
>滚动预览右侧内容
C-s按名称搜索
n重复上次搜索
t切换项是否被标记
T去除标签项
C-t标记所有项
:为所选项目或每个标记项目运行命令的提示符
O改变排序字段
r反向排序顺序
v触发预览
q退出树模式

使用choose-tree命令激活树模式

在这里插入图片描述

6. 分离其它客户端

C-b D(即C-b S-d)可以得到一个客户列表。这类似于树模式,称为客户机模式。

每个客户端都显示在上半部分的列表中,包括它的名称、附加的会话、大小和最后使用的时间和日期;下半部分预览了选定的客户端,其状态行尽可能多。

移动键和标记键与树模式相同,但其他键不同,例如Enter键将分离选定的客户端。

这是一个在客户端模式下没有移动和标记键的键列表,与树模式相同:

KeyFunction
Enter分离选择客户
d卸载所选客户端,与Enter相同
D分离标记的客户端
x分离选定的客户端并尝试终止启动它的shell
X分离标记了客户机,并尝试终止它们开始时使用的shell

除了使用客户端模式,detach-client标志有一个-a标志来分离除了附加的客户端之外的所有客户端。

在这里插入图片描述

7. 终止会话、窗口或窗格

按下C-b &确认提示,然后杀死(关闭)当前窗口。窗口中的所有窗格在同一时间被杀死。C-b x只终止活动窗格。这些都绑定到kill-windowkill-pane命令。

kill-session命令会杀死附加的会话及其所有窗口,并卸载客户端。kill-session没有键绑定,但是可以在命令提示符或树模式下的:提示符中使用。

8. 重命名会话和窗口

C-b $将提示为所附的会话输入新名称。使用rename-session命令。同样,C-b使用rename-window命令提示输入当前窗口的新名称。

9. 交换和移动

Tmux允许用swap-paneswap-window命令交换窗格和Windows。

为了方便交换,可以标记单个窗格。所有会话都有一个标记窗格。C-b m键绑定用于切换附加会话中当前窗口中的活动窗格是否为标记窗格。C-b M完全清除标记窗格,因此没有标记窗格。标记窗格的边框由绿色背景显示,包含标记窗格的窗口在状态行中有一个M标志。

一旦一个窗格被标记,就可以使用swap-pane命令将其与当前窗口中的活动窗格交换,或者使用swap-window命令将包含标记窗格的窗口与当前窗口交换。例如,使用命令提示符:

:swap-pane

此外,还可以使用C-b {C-b }键绑定将窗格与上面或下面的窗格交换。

移动窗口使用move-window命令或C-b .键绑定。按下C-b .将提示当前窗口的新索引。如果一个窗口已经存在于给定的索引,将显示一个错误。可以使用-k标志-来替换现有的窗口,以便将一个窗口移动到索引999:

:move-window -kt999

如果窗口列表中有空白,可以使用-r标志对索引进行重新编号以move-window。例如,这将把窗口列表0,1,3999变成0,1,2,3:

:movew -r

10. 调整和缩放窗格

窗格可以用C-b C-Left,C-b C-Right, C-b C-UpC-b C-Down来调整窗格大小,大步可以用C-b M-Left, C-b M-Right, C-b M-UpC-b M-Down。它们使用resize-pane命令。

一个单一的窗格可以暂时占据整个窗口使用C-b z,隐藏任何其他窗格。再次按C-b z将窗格和窗口布局恢复到原来的状态。这叫做缩放和不缩放。窗格被缩放的窗口在状态行中以Z标记。改变窗口中窗格大小或位置的命令会自动取消窗口的缩放。

11. 窗口布局

窗口中的窗格可以自动排列成几个命名的布局之一,这些布局可以使用C-b Space绑定来进行旋转,或者直接使用C-b M-1C-b M-2等方式进行选择。

可用的布局如下:

NameKeyDescription
even-horizontalC-b M-1均匀分布
even-verticalC-b M-2上下均匀地展开
main-horizontalC-b M-3顶部是一大块,其余的均匀分布
main-verticalC-b M-4左边有一大块,其余的均匀地上下摊开
tiledC-b M-5平铺的行数与列数相同

12. 复制和黏贴

Tmux有自己的复制和粘贴系统。一段复制的文本称为粘贴缓冲区。文本使用复制模式复制,使用C-b[输入,并且最近复制的文本粘贴到使用C-b ]的活动窗格中。

可以给粘贴缓冲区指定名称,但默认情况下由tmux给它们指定一个名称,例如buffer0buffer1。这样的缓冲区称为自动缓冲区,最多保留50个缓冲区——一旦有50个缓冲区,当添加另一个时,最老的将被删除。如果一个缓冲区被赋予了一个名称,它就被称为一个命名缓冲区;命名缓冲区不会被删除,不管有多少。

可以将tmux配置为将任何复制的文本发送到系统剪贴板:本文解释了对此进行配置的不同方法。

复制模式冻结窗格中的任何输出,并允许复制文本。查看模式(前面描述过)是复制模式的只读形式。

与命令提示符一样,复制模式使用类似于emacs(1)的键;但是,如果VISUAL或EDITOR环境变量被设置为包含vi的内容,那么将使用vi(1)样式的键。以下键是一些在复制模式下可用的emacs(1)键:

KeyAction
Up, Down, Left, Right移动光标
C-Space开始选择
C-w复制选择并退出复制模式
q退出复制模式
C-g停止选择而不复制,或停止搜索
C-a将光标移到行首
C-e将光标移到行尾
C-r搜索交互地向后
M-f将光标移到下一个单词
M-b将光标移到上一个单词上

手册页中提供了vi(1)和emacs(1)的完整键列表

一旦复制了一些文本,可以使用C-b ]粘贴最近的文本,或使用C-b =。输入的缓冲区模式粘贴较旧的缓冲区。缓冲区模式类似于客户端模式和树模式,它提供了一个缓冲区列表以及它们内容的预览。除了树模式和客户端模式中使用的导航和标记键,缓冲区模式支持以下键:

KeyFunction
Enter粘贴选择缓冲
p粘贴选定的缓冲区,与Enter相同
P粘贴标签缓冲区
d删除选中的缓冲
D删除标记的缓冲区

可以使用set-buffer命令重命名缓冲区。-b标志给出了现有的缓冲区名称,-n给出了新名称。这将把它转换为一个命名缓冲区。例如,在命令提示符中将buffer0重命名为mybuffer:

:setb -bbuffer0 -nmybuffer

Set-buffer也可以用于创建缓冲区。创建一个带有文本栏的foo缓冲区:

:setb -bfoo bar

load-buffer将从文件中加载一个缓冲区:

:loadb -bbuffername ~/a/file

不带-bSet-bufferload-buffer将创建一个自动缓冲区。

使用save-buffer可以将现有缓冲区保存到文件中:

:saveb -bbuffer0 ~/saved_buffer

13. 寻找窗口和窗格

C-b f提示输入一些文本,然后进入带有筛选器的树模式,以只显示文本出现在可见内容或窗格标题或窗口名称中的窗格。如果找到窗格,则只有那些窗格出现在树中,并且文本filter:active显示在预览上方。如果没有找到窗格,所有窗格将显示在树和文本filter:no matches上方不会出现。

14. 使用鼠标控制

Tmux对鼠标有丰富的支持。它可用于更改活动窗格或窗口、调整窗格大小、复制文本或从菜单中选择项目。

mouse选项支持鼠标;选项和配置文件将在下一节中详细描述。要从命令提示符打开鼠标,使用set-option命令:

:set -g mouse on

一旦鼠标被启用:

  • 按下窗格上的左键将使该窗格成为活动窗格。
  • 按下状态行窗口名称上的左键将使该窗口成为当前窗口。
  • 用左按钮在窗格边框上拖动可以调整窗格的大小。
  • 用左键拖动窗格内的文本;当鼠标释放时,所选文本将被复制。
  • 按下窗格上的右按钮将打开一个带有各种命令的菜单。当鼠标按钮被释放时,选中的命令将以窗格作为目标运行。每个菜单项也有一个键快捷键,显示在括号中。
  • 按下窗口或状态行会话名称上的右按钮,将打开窗口或会话的类似菜单。
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昵称系统有问题

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值