Files
tty7/docs/window/tabs-and-splits.mdx
T
l0ng-ai b063ba97a0 refactor(settings): fold Window & Tabs into General, drop two settings (#982)
The Window & Tabs page is gone. Its three remaining tab settings (new tab
position, tab bar position, auto grouping) are a Tabs group on General,
below Startup & restore, so the nav has seven sections.

Removed outright:
- SSH tab title (`ssh_tab_title`, #726, unreleased). The sidebar already
  groups SSH tabs under their host, and renaming a tab pins its name.
- Open diff preview from sidebar counts (`sidebar_diff_preview`, #247).
  The sidebar counts and the Info panel's changes row always open the
  diff overlay; the large-tree stall it worked around is bounded. An old
  config.json that still carries either key loads as before.

The now-unused window settings icon goes with the page.
2026-09-27 19:11:45 +08:00

130 lines
5.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Tabs and splits"
description: "Opening, arranging, and rearranging the panes in a tab."
---
<Note>
Keys are written in macOS notation. On Windows and Linux, read <kbd>⌘</kbd> as
<kbd>Ctrl ⇧</kbd> for most window actions — the exact chords are on the
[keyboard shortcuts](/reference/keyboard-shortcuts) page.
</Note>
## Tabs
| | |
|---|---|
| <kbd>⌘ T</kbd> | New tab |
| <kbd>⌘ W</kbd> | Close the tab (or the focused pane, if the tab has more than one) |
| <kbd>⌘ ⇧ T</kbd> | Reopen the tab you just closed |
| <kbd>⌘ 1</kbd> … <kbd>⌘ 9</kbd> | Jump to tab 1–9 |
| <kbd>⌃ ⇥</kbd> · <kbd>⌃ ⇧ ⇥</kbd> | Hold to walk the switcher forwards or backwards; it commits when you let go |
A new tab always opens in the current pane's directory. Where it lands in the
list is **Settings → General → New tab position** — *After current* by
default, or *At end*.
Right-click a tab for the rest: rename, split right or down, a new worktree tab,
copy the working directory, copy the session id, close · close others · close to
the right, and — when a coding agent is running there — mark unread and fork its
session.
## Splits
| | |
|---|---|
| <kbd>⌘ D</kbd> | Split right |
| <kbd>⌘ ⇧ D</kbd> | Split down |
| <kbd>⌘ ]</kbd> · <kbd>⌘ [</kbd> | Next pane · previous pane |
| <kbd>⌘ ⌥ ← → ↑ ↓</kbd> | Focus the pane in that direction |
| <kbd>⌘ ⇧ ⏎</kbd> | Zoom the focused pane to fill the tab |
| <kbd>⌘ ⏎</kbd> | Fullscreen the window |
A split inherits the current pane's working directory, so splitting inside a
repository keeps you in the repository.
Resizing and swapping panes have no default keys — bind them under **Settings →
Keybindings**, or run them from Search Everywhere (*Resize Pane Left*, *Swap
Pane Next*, and friends).
Inactive panes are dimmed slightly so the focused one is obvious. Turn that off
with **Settings → Appearance → Dim inactive panes**.
## Rearranging by dragging
Hover a pane and a small grip appears along its top edge. Drag it to move that
pane somewhere else in the tab.
<Frame caption="Dragging a pane by its grip, with the landing highlighted">
<video autoPlay muted loop playsInline src="/images/pane-drag.mp4" aria-label="Dragging a pane to a new position" />
</Frame>
Where you drop it decides what happens:
<AccordionGroup>
<Accordion title="On a pane's side">
The pane goes in **beside** that one. If it is facing a neighbour in the
same row or column, it joins that row and takes an equal share of it. Only
when it faces across the layout — where there is no row to join — does it
split that pane in half.
</Accordion>
<Accordion title="On a pane's middle">
The two panes **trade places**.
</Accordion>
<Accordion title="Past a pane's outer side">
The band beyond the outermost edge — the side facing the window rather than
another pane — makes the dragged pane a full-width or full-height band
beside everything else, sized to an even share of what that side already
holds. A pane in the middle of a 2×2 becomes a full-height *third* column in
one drag, rather than taking half the window.
</Accordion>
</AccordionGroup>
The landing lights up while you drag, and only ever lights up when the drop
would actually change the layout.
## Making one tab a pane of another
Two sessions you keep switching between belong in one tab. Drag a tab — by its
chip in the tab bar, or by its row in the sidebar — out over the panes and drop
it where you want it: it becomes a pane of the tab you are looking at, and the
tab it came from is gone.
The landing reads exactly as it does for a pane, minus the middle: a tab has
nothing here to trade places with, so a pane's middle means "split it the way it
is longest". A tab that was itself split arrives with its panes still arranged
the way you left them, taking one share of whatever row or column it joined.
Nothing restarts on the way over. A shell mid-command, an SSH session, a coding
agent halfway through a turn — all of them keep running; only the tab they were
in goes away. The tab's *name* does not come along.
Picking a tab up does not switch to it, so the tab you drop into is the one you
were already looking at. A plain click still switches, as always.
## Making a pane a tab of its own
The same move backwards. Drag a pane by its grip up to the tab bar — or out to
the sidebar, if that is where your tabs live — and a caret shows which two tabs
it would go between. Drop it and it leaves the split it was in and becomes a tab
of its own, at that spot.
Nothing restarts here either. The last pane in a tab has nowhere to go, since it
is already a tab on its own, so no caret appears for it.
## Closing something that is busy
Closing a pane or tab with a command still running asks first, and says what is
running: *"cargo is still running. Closing ends it."* When a coding agent is
mid-turn it says that instead — *"Claude Code is still working. Closing ends its
turn."*
## Where the tabs live
**Settings → General → Tab bar position** puts tabs in a vertical sidebar
on the left (the default) or a horizontal strip on top. The sidebar has room for
things a strip does not — git branch, diff counts, agent status — so most of
[its own page](/window/sidebar) is about that.
<kbd>⌘ B</kbd> toggles the sidebar; <kbd>⌘ J</kbd> toggles the
[side panel](/window/side-panel) on the right.