Ghostty keyboard shortcuts for Linux and Mac

Ghostty's default key bindings for Linux and macOS, taken from the default keybind set in the source code of release 1.3.1: tabs, windows, splits, clipboard, scrollback, search and font size, followed by the keybind configuration syntax and the command-line actions that list bindings. Linux defaults are mostly Ctrl + Shift chords and the Mac ones use Cmd, which Ghostty's own output names super. The quick terminal has no default key and appears only as a configuration line.

100 shortcuts in 9 sections. Checked row by row against Ghostty source code on . Edited by Jay.

Tabs 10

Ghostty writes the Mac Command key as super: that is the name its keybind output uses, while cmd and command are aliases the config file accepts.

ActionLinuxMac
New tabCtrl+Shift+TCmd+T
Close tabCloses the current tab with every split inside it; a confirmation can appear, depending on confirm-close-surface.Ctrl+Shift+WCmd+Option+W
Previous tabOne of two tab bindings that are identical on Linux and macOS.Ctrl+Shift+TabCtrl+Shift+Tab
Next tabWorks unchanged on both systems, beside the platform binding listed below.Ctrl+TabCtrl+Tab
Previous tabThe Linux binding is performable: when the action cannot run, the key goes to the program in the terminal.Ctrl+Shift+LeftCmd+Shift+[
Next tabCtrl+Shift+RightCmd+Shift+]
Previous tabLinux-only alternative; the macOS defaults have no Page Up tab binding.Ctrl+Page Up—
Next tabCtrl+Page Down—
Go to tab by numberA number higher than the count of open tabs selects the final one.Alt+1-8Cmd+1-8
Go to last tabSelects the final tab regardless of how many tabs are open.Alt+9Cmd+9

Windows and application 5

ActionLinuxMac
New windowAlso brings Ghostty to the front when the application is not focused.Ctrl+Shift+NCmd+N
Close windowCloses the window together with all of its tabs and splits.Alt+F4Cmd+Shift+W
Quit GhosttyCtrl+Shift+QCmd+Q
Toggle fullscreenApplies to the current window; macOS has a second binding, listed under Mac only.Ctrl+EnterCmd+Return
Toggle command paletteOpens a searchable list of actions with their key bindings; on Linux it needs libadwaita 1.5 or newer.Ctrl+Shift+PCmd+Shift+P

Splits 13

ActionLinuxMac
Split rightCreates a new terminal to the right of the focused one.Ctrl+Shift+OCmd+D
Split downCreates a new terminal below the focused one.Ctrl+Shift+ECmd+Shift+D
Focus previous splitMoves through the splits in the order they were created.Super+Ctrl+[Cmd+[
Focus next splitFollows creation order, not the position on screen.Super+Ctrl+]Cmd+]
Focus split aboveHas an effect only when a split exists in that direction.Ctrl+Alt+UpCmd+Option+Up
Focus split belowCtrl+Alt+DownCmd+Option+Down
Focus split to the leftCtrl+Alt+LeftCmd+Option+Left
Focus split to the rightCtrl+Alt+RightCmd+Option+Right
Resize split upwardEach press moves the divider by 10 pixels; the Linux binding adds Shift to the Mac one.Super+Ctrl+Shift+UpCmd+Ctrl+Up
Resize split downwardSuper+Ctrl+Shift+DownCmd+Ctrl+Down
Resize split leftwardSuper+Ctrl+Shift+LeftCmd+Ctrl+Left
Resize split rightwardSuper+Ctrl+Shift+RightCmd+Ctrl+Right
Toggle split zoomThe zoomed split fills the whole tab and hides the others until the key is pressed again.Ctrl+Shift+EnterCmd+Shift+Return

Clipboard and selection 9

Keyboards with dedicated Copy and Paste keys trigger the same two clipboard actions on both systems.

ActionLinuxMac
Copy to clipboardPerformable: with nothing selected the key is not consumed and reaches the running program.Ctrl+Shift+CCmd+C
Paste from clipboardCtrl+Shift+VCmd+V
Copy to clipboardAlternative copy binding offered on desktops other than macOS.Ctrl+Insert—
Paste from selectionPastes the contents of the selection clipboard rather than the default one.Shift+InsertCmd+Shift+V
Select allCtrl+Shift+ACmd+A
Extend selection leftMoves the edge of an existing selection by one cell; it never starts a selection.Shift+LeftShift+Left
Extend selection rightShift+RightShift+Right
Extend selection upMoves the edge of the selection one line upwards.Shift+UpShift+Up
Extend selection downShift+DownShift+Down

Font size and configuration 6

ActionLinuxMac
Increase font sizeGrows the font by one point; the plus form serves keyboards with a dedicated plus key.Ctrl+=orCtrl++Cmd+=orCmd++
Decrease font sizeShrinks the font by one point per press.Ctrl+-Cmd+-
Reset font sizeReturns to the size set in the configuration.Ctrl+0Cmd+0
Reload configRe-reads the configuration file and applies whatever can change at runtime.Ctrl+Shift+,Cmd+Shift+,
Open configOpens the configuration file in the default editor of the operating system.Ctrl+,Cmd+,
Toggle inspectorShows or hides the terminal inspector; the binding mirrors the Chromium developer tools key.Ctrl+Shift+ICmd+Option+I

Mac only 23

ActionLinuxMac
Close surfaceCloses whatever has focus: a split, a tab or a window.—Cmd+W
Toggle fullscreenSecond fullscreen binding, the one common to Mac programs.—Cmd+Ctrl+F
Equalize splitsGives every split in the window the same size; Linux has no default key for it.—Cmd+Ctrl+=
Clear screenEmpties the scrollback as well as the visible screen.—Cmd+K
Undo last actionRestores a tab, window or split closed moments ago, within the undo-timeout period.—Cmd+Z
Undo last actionSame undo on a second key; undo and redo are implemented on macOS only.—Cmd+Shift+T
Redo last action—Cmd+Shift+Z
Scroll to selectionBrings the selected text back into view.—Cmd+J
Jump to previous promptSecond default for this jump; the Cmd-only form matches Terminal.app.—Cmd+Shift+Up
Jump to next prompt—Cmd+Shift+Down
Search selectionSearches for the selected text, or swaps the terms of a search that is already open.—Cmd+E
Next search resultWorks only while a search is active.—Cmd+G
Previous search result—Cmd+Shift+G
End searchCloses the search bar from the keyboard, as Esc does.—Cmd+Shift+F
Extend selection page up—Shift+Page Up
Extend selection page down—Shift+Page Down
Extend selection to topStretches the selection to the top-left corner of the screen; on Linux this key scrolls.—Shift+Home
Extend selection to endStretches the selection to the bottom-right corner of the screen.—Shift+End
Send Ctrl-E (line end)A natural text editing default; shells with Emacs-style editing jump to the end of the line.—Cmd+Right
Send Ctrl-A (line start)Sent as the byte 0x01, which Emacs-style line editing reads as start of line.—Cmd+Left
Send Ctrl-U (erase line)Sent as the byte 0x15; Backspace is the key that Mac keyboards label Delete.—Cmd+Backspace
Send Esc B (word back)Sends the escape sequence Esc b in place of the modified arrow key encoding.—Option+Left
Send Esc F (word forward)—Option+Right

Keybind configuration syntax 19

The global: prefix needs the Accessibility permission on macOS; on Linux it works only where the desktop implements the Global Shortcuts portal.

ActionLinuxMac
Bind a trigger to an actionOne line of the config file; a later line with the same trigger replaces the earlier one.keybind = trigger=actionkeybind = trigger=action
Bind a key sequencePress the first chord, release it, then the next key; Ghostty waits for it without a timeout.keybind = ctrl+a>n=new_windowkeybind = ctrl+a>n=new_window
Pass a keybind on the command lineQuote the value, because most shells treat the > character specially.ghostty --keybind='ctrl+a>n=new_window'ghostty --keybind='ctrl+a>n=new_window'
Bind a Unicode character keyFires when a keypress produces that character, which helps on keyboard layouts other than US.keybind = ctrl+ö=actionkeybind = ctrl+ö=action
Match any unbound keyA trigger that fires for every key pressed with Ctrl that has no binding of its own.ctrl+catch_allctrl+catch_all
Bind only when the action appliesWithout a selection Ghostty acts as if the keybind were not set, and the program receives the key.keybind = performable:ctrl+c=copy_to_clipboardkeybind = performable:ctrl+c=copy_to_clipboard
Run action and pass key onThe prefix lets the program in the terminal receive the encoded key as well.unconsumed:ctrl+a=reload_configunconsumed:ctrl+a=reload_config
Apply keybind to every surfaceTrigger prefix that runs a surface-specific action in each terminal, not only the focused one.all:all:
Toggle quick terminal from anywhereQuick terminal has no default key; the global: prefix makes this one work while another application is focused.keybind = global:cmd+backquote=toggle_quick_terminalkeybind = global:cmd+backquote=toggle_quick_terminal
Combine trigger prefixesSeveral prefixes can stand in front of one trigger, each ending in a colon.global:unconsumed:ctrl+a=reload_configglobal:unconsumed:ctrl+a=reload_config
Chain another actionAppends an action to the keybind defined just before it; chains exist since release 1.3.0.keybind = chain=goto_split:leftkeybind = chain=goto_split:left
Bind inside a key tablePuts the binding in a table named foo, which works only while that table is activated.foo/ctrl+a=new_windowfoo/ctrl+a=new_window
Remove all keybindsWipes every binding set before this line, the defaults included.keybind=clearkeybind=clear
Remove one bindingAction value that drops the trigger, so a printable key is sent through to the program again.unbindunbind
Swallow a keyAction value that makes the key do nothing and send no encoding.ignoreignore
Send a stringAction value in Zig string literal syntax; this example sends Ctrl-U.text:\x15text:\x15
Send a CSI sequenceAction value written without the CSI header; this example moves the cursor up.csi:Acsi:A
Send an escape sequenceThis example erases the remainder of the word right of the cursor.esc:desc:d
Remap a modifier keyMakes the physical Ctrl key act as Super inside Ghostty only; the Super key itself is unchanged.key-remap = ctrl=superkey-remap = ctrl=super

Command-line actions 4

ActionLinuxMac
List default keybindsThe flag limits the list to the defaults; without it the command lists all available keybinds.ghostty +list-keybinds --defaultghostty +list-keybinds --default
List bindable actionsPrints every action name that a keybind line accepts.ghostty +list-actionsghostty +list-actions
List available themesShows the theme names that the theme option accepts.ghostty +list-themesghostty +list-themes
Print default config with docsWrites the whole default configuration and its documentation to standard output, so pipe it into a pager.ghostty +show-config --default --docsghostty +show-config --default --docs

Notes

Tabs, windows, surfaces

On Linux Ctrl + Shift + T opens a tab and Ctrl + Shift + N a window; the Mac equivalents are Cmd + T and Cmd + N. Closing differs between the two systems. On a Mac Cmd + W closes the current surface, Ghostty's word for whichever split, tab or window has focus, while Cmd + Option + W closes the tab and Cmd + Shift + W the window. On Linux, in release 1.3.1, Ctrl + Shift + W closes the current tab with all of its splits and Alt + F4 the window. Ctrl + Tab and Ctrl + Shift + Tab move between tabs on both systems, and Ctrl + Shift + Q or Cmd + Q quits.

Splits

Ctrl + Shift + O splits to the right and Ctrl + Shift + E downward (Cmd + D and Cmd + Shift + D on a Mac). Focus moves by direction with Ctrl, Alt and an arrow key on Linux, for example Ctrl + Alt + Left, and with Cmd and Option on a Mac. Resizing takes Super + Ctrl + Shift + Up and its three siblings on Linux, Cmd + Ctrl + Up on a Mac, 10 pixels per press. Ctrl + Shift + Enter (Cmd + Shift + Return) zooms one split to fill the tab and back. Equalizing has a default key only on macOS, Cmd + Ctrl + =; on Linux bind the equalize_splits action yourself.

Scrollback, search and config

Ctrl + Shift + J writes the screen contents to a temporary file and types the path at the prompt; Ctrl + Alt + Shift + J opens the file instead. Ctrl + Shift + Page Up and Ctrl + Shift + Page Down jump between shell prompts when shell integration is enabled. Scrollback search arrived in release 1.3.0: Ctrl + Shift + F on Linux, Cmd + F on a Mac. After editing the config file, Ctrl + Shift + , reloads it without a restart and Ctrl + , opens it. From a shell, ghostty +list-keybinds --default prints the default bindings of the installed build and ghostty +list-actions every action that can be bound.

Questions

How do I see Ghostty's actual default keybinds on my machine?

Run ghostty +list-keybinds --default. It prints the defaults compiled into the installed build, so a Mac lists super bindings and Linux the Ctrl and Shift ones.

What is a "surface"?

Ghostty's term for a terminal area, whether it sits in a window, a tab or a split. On a Mac Cmd + W closes whichever surface has focus; the Linux default Ctrl + Shift + W closes the current tab.

Why does Ctrl + Shift + Page Down do nothing?

Jump to prompt requires shell integration, which marks the prompts. The shell-integration option controls it: detect chooses by the shell's file name among bash, elvish, fish, nushell and zsh, and none leaves the setup to you.

Do I need to restart after changing the config?

No. Ctrl + Shift + , on Linux or Cmd + Shift + , on a Mac reloads the configuration in place, although not every option can be applied at runtime.

Is there a default key for the quick terminal?

No. The default keybind set of release 1.3.1 has no binding for toggle_quick_terminal; add one yourself, for example keybind = global:cmd+backquote=toggle_quick_terminal, the line the documentation gives for macOS.

Why does Ghostty print super where a Mac keyboard says Cmd?

super is the modifier's own name in Ghostty; cmd and command are aliases that the config file accepts, and output such as the keybind list always uses the non-aliased name.

Sources and checks

Every row on this page was matched to a line in the documentation above on . A binding that could not be found there is not listed.

Found a wrong or missing key? Tell us and it gets checked against the source. How we verify describes the process and its limits.