工作区分组
工作区分组让你能够将工作区嵌入侧边栏中可折叠的命名分组。每个分组都有一个隐式的锚点工作区、一个用于在分组内创建新工作区的可自定义 + 按钮,以及用于重命名、固定、取消分组和编辑配置的右键操作。
核心概念
锚点工作区
每个分组都恰好由一个称为锚点的工作区拥有。侧边栏中的分组标题栏就是锚点的呈现形式——锚点没有单独的行。点击标题名称区域会聚焦到锚点的面板;点击箭头则切换折叠状态。
分组的锚点在创建时始终是一个全新的工作区;无论是对所选工作区进行分组还是创建分组,都不会将现有工作区中的任何一个提升为锚点。(之后关闭锚点时,确实会提升分组中第一个仍保留的成员,见下文。)对所选工作区进行分组时,锚点的工作目录继承自第一个选中的工作区;通过 CLI 创建且未指定 --cwd 时,则继承自当前工作区。
关闭锚点工作区时,只会关闭该工作区,并将分组中第一个仍保留的成员(按照分组顺序仍存在的成员中最靠前的一个)提升为新锚点,因此分组及其其他成员会保持不变(被提升的成员随后会在标题栏中显示分组名称)。当锚点是分组中唯一的工作区时,分组会被移除。要将分组展开为未分组的工作区,请使用取消工作区分组;要关闭分组中的所有工作区,请使用删除分组。
分组标识
一个分组拥有名称、图标(一个 SF Symbol,默认为 folder.fill)以及一个可选的自定义颜色。这些与锚点工作区自身的自定义设置相互独立。锚点的颜色和图标在创建时取自分组,但之后两者可以各自变化。
固定
分组可以独立于单个工作区的固定状态进行固定。被固定的顶级行,无论是单个工作区还是分组,都会排在未固定的行之上。在每个层级内,分组和工作区会保持你拖动它们时形成的顺序。
侧边栏自上而下排列顶级行:
- 已固定的顶级行(工作区和分组)。
- 未固定的顶级行(工作区和分组)。
创建分组
可以通过键盘快捷键或侧边栏上下文菜单创建组。空组会插入一个新的锚点工作区作为组标题。基于选择的组会把这个锚点插入到所选项上方,并将所选工作区移入组中。组创建后,你可以从组标题管理它并向其中添加工作区(见下方“管理组”)。
通过键盘快捷键
按 ⌃⌘G 创建新的空工作区组。在侧边栏中选择两个或更多工作区,然后按 ⌘⇧G 对所选项分组。两种方式都会创建一个新的锚点工作区,并自动将组命名为 Group 1、Group 2 等。你可以随时通过标题上下文菜单重命名。
单标签分组无法通过快捷键创建。请使用工作区右键菜单中的 New Group from Workspace 项来创建。
通过工作区右键菜单
右键点击侧边栏中的任意工作区,选择“新建空工作区组”、“从工作区新建组”,或者在选择多个工作区时选择“从所选项新建组”。侧边栏列表下方的空白区域也提供“新建空工作区组”。这些方式使用与快捷键相同的自动命名行为。
管理分组
分组创建后,可以通过其标题的右键菜单以及标题上的 + 按钮来管理分组并向其中添加工作区。这两者都不会创建新分组。
通过分组标题栏右键菜单
右键单击现有分组标题,可使用 Rename Group…、Pin Group / Unpin Group、Edit Group Config…(会打开 ~/.config/cmux/cmux.json)、Open Workspace Groups Docs、Ungroup Workspaces 以及 Delete Group。Ungroup Workspaces 会保留工作区,仅移除分组容器。Delete Group 会关闭分组标题工作区以及分组内的所有工作区;如果分组包含子工作区,会先提示确认。
通过分组标题栏上的 + 按钮
将鼠标悬停在分组标题上即可显示末尾的 + 按钮。单击它可在分组中以锚点工作目录创建一个新工作区。右键单击它可使用 New Workspace in Group、Edit Group Config… 以及 Open Workspace Groups Docs。
当活动工作区是某个分组的锚点或成员时,按 ⌘N 同样会在该分组内创建新工作区。默认放置方式为 After current(在当前之后):从普通分组成员触发时,新工作区会紧接在活动成员之后;从锚点或标题栏触发时,则会落在分组的顶部。
CLI
所有分组操作都可以通过 cmux workspace-group 子命令编写脚本。带连字符的形式将率先推出;一旦更广泛的 cmux workspace 命令命名空间上线,cmux workspace group 将成为规范形式,而带连字符的形式将永久保留为别名。
子命令
cmux workspace-group list [--json]
cmux workspace-group create --name "manaflow" [--cwd ~/projects/manaflow] [--from <id>,<id>]
cmux workspace-group ungroup <group-id>
cmux workspace-group delete <group-id>
cmux workspace-group delete <group-id> --close-workspaces
cmux workspace-group rename <group-id> --name "new name"
cmux workspace-group collapse <group-id>
cmux workspace-group expand <group-id>
cmux workspace-group pin <group-id>
cmux workspace-group unpin <group-id>
cmux workspace-group add --group <group-id> --workspace <workspace-id>
cmux workspace-group remove --workspace <workspace-id>
cmux workspace-group set-anchor --group <group-id> --workspace <workspace-id>
cmux workspace-group new-workspace <group-id> [--placement afterCurrent|top|end]
cmux workspace-group set-color <group-id> --hex "#7A4FD8"
cmux workspace-group set-icon <group-id> --symbol ladybug.fill
cmux workspace-group move <group-id> (--to-index <n> | --before <group-id> | --after <group-id>)
cmux workspace-group focus <group-id>create 会返回一个分组句柄(默认为 workspace_group:N)。传入 --json 可获取完整的结构化数据。
向 set-color 或 set-icon 传入空值可清除分组的颜色或图标。delete 是不可逆的:它会关闭每一个成员工作区。
示例
将当前选中的工作区归入一个命名分组:
cmux workspace-group create --name manaflow --from workspace:1,workspace:2在已有分组内创建一个新工作区,例如接入一个 worktree 脚本:
cmux workspace-group new-workspace workspace_group:1列出聚焦窗口中的分组:
cmux workspace-group list配置
每个分组的配置位于 ~/.config/cmux/cmux.json 中的 workspaceGroups 键下,以锚点工作区的工作目录作为键。请参阅配置参考,了解所支持的键,包括全局新建工作区放置位置,以及每个目录的颜色、图标、放置位置和右键菜单操作。
持久化
分组名称、锚点、固定状态、折叠状态、颜色和图标会与你的工作区一起保存,并在重新启动时恢复。分组归属信息存储在每个工作区上。