Keyboard shortcuts
Keyboard shortcuts configured for macOS, Alacritty, fish, tmux, Neovim, and OpenCode.
On this page15 sections
Choose the layer where the shortcut runs. Alacritty, the terminal application, sends many macOS-style shortcuts directly to tmux; fish adds command-line bindings; tmux commands use Ctrl + A as their prefix.
No shortcuts match this search.
macOS system shortcuts
These mappings are applied by the
system_defaults
Ansible role.
| Shortcut | Action |
|---|---|
| Cmd+G | Open Spotlight |
| Cmd+Space | Select the next input source |
The default shortcut for selecting the previous input source is disabled so it does not conflict with the configured next-source binding.
Alacritty and tmux
These shortcuts work from Alacritty without first entering the tmux prefix.
Windows and sessions
| Shortcut | Action |
|---|---|
| Cmd+N | Open a new Alacritty window |
| Cmd+T | Create a tmux window in the current directory |
| Cmd+Shift+R | Rename the tmux session |
| Cmd+W | Kill the current tmux window |
| Cmd+X | Kill the current tmux pane |
Navigation and search
| Shortcut | Action |
|---|---|
| Ctrl+Tab | Select the next tmux window |
| Ctrl+Shift+Tab | Select the previous tmux window |
| Cmd+1 … Cmd+9 | Select tmux window 1–9 |
| Cmd+F | Enter copy mode and search forward |
| Cmd+0 | Reset the Alacritty font size |
Links and text
| Shortcut | Action |
|---|---|
| Ctrl+Shift+O | Open a URL or path under the pointer: URLs go to the system opener, files open in a new tmux Neovim window |
| Cmd+Shift+P | Copy a visible file path, including its line number when one is present |
| Shift+Enter | Send a Shift-modified Enter that a TUI can tell apart from plain Enter |
fish shell
These bindings act on the current fish command line.
| Shortcut | Action |
|---|---|
| Alt+S | Prepend sudo unless the command line already starts with it |
| Ctrl+G | Open the project chooser powered by fzf |
| Ctrl+T | Open the fzf directory picker |
| Alt+Left / Alt+Right | Move the cursor one word backward or forward |
Alacritty sets option_as_alt = "OnlyLeft", so the
Alt bindings above use the left Option key.
fzf runs with --tmux, so its pickers open in a tmux popup whenever one is
available. The fzf.fish plugin installs further pickers on its own default keys.
tmux prefix commands
Press Ctrl+A, release it, and then press the command key. Press Ctrl+A twice to send a literal Ctrl+A through to the program in the pane.
Create and arrange
| Command | Action |
|---|---|
Ctrl+A then c | Create a window in the current directory |
Ctrl+A then r | Rename the current window |
Ctrl+A then R | Rename the current session |
Ctrl+A then | | Split the pane horizontally |
Ctrl+A then _ | Split the pane vertically |
Ctrl+A then + | Toggle pane zoom |
Ctrl+A then m | Move the current window to a prompted index |
Ctrl+A then L | Link a window from another session |
Move around
| Command | Action |
|---|---|
Ctrl+A then h / j / k / l | Move one pane left, down, up, or right |
Ctrl+A then [ / ] | Select the previous / next pane |
Ctrl+A then { / } | Select the previous / next window |
| Ctrl+A then Tab | Return to the most recently used window |
Ctrl+A then \ | Swap the current pane with pane 1, or select pane 1 |
| Ctrl+A then Ctrl+O | Rotate the panes downward |
Agentic tasks
| Command | Action |
|---|---|
| Ctrl+A then Ctrl+G | Start or reopen an agent task: pick a repository, name the task, get a git worktree with an OpenCode window |
Ctrl+A then S | Create or attach a context session by name, then open the task launcher |
| Ctrl+A then Ctrl+D | Open the workmux agent dashboard |
Close and detach
| Command | Action |
|---|---|
Ctrl+A then x | Kill the current pane |
Ctrl+A then X | Kill the current window |
| Ctrl+A then Ctrl+X | Confirm and kill every other window |
Ctrl+A then Q | Confirm and kill the session |
Ctrl+A then d | Detach this client |
Ctrl+A then D | Detach other clients when present |
Configuration and copy mode
| Command | Action |
|---|---|
| Ctrl+A then Ctrl+E | Edit tmux.conf, then reload it |
| Ctrl+A then Ctrl+R | Reload tmux.conf |
| Ctrl+S | Enter copy mode without the prefix |
Ctrl+A then p | Paste the latest tmux buffer |
| Ctrl+A then Ctrl+P | Choose a tmux buffer |
Copy mode uses vi keys and supports the mouse wheel, Page Up and Page Down, and Option-based scrolling by line or half page.
Neovim additions
LazyVim provides most editor mappings. This repository overrides or adds the following:
| Mode | Shortcut | Action |
|---|---|---|
| Normal | o | Create a blank line below without staying in Insert mode |
| Normal | O | Create a blank line above without staying in Insert mode |
| Normal | <leader><leader> | Clear search highlights |
| Normal | ys / ds / cs | Add, delete, or replace a surrounding pair |
| Normal and Visual | <leader>/ | Comment the current line or the selection |
| Normal and Visual | <S-h> / <S-l> | Move the line or selection left or right |
| Normal and Visual | <S-j> / <S-k> | Move the line or selection down or up |
| Normal and Visual | gz | Title-case the line or the selection |
| Normal, Operator, and Visual | w / b | Step by subword, so camelCase and snake_case split into parts |
| Visual | > / < | Indent or outdent while keeping the selection active |
| Insert | <C-j> / <C-k> | Select the next or previous completion item |
Three LazyVim defaults are removed rather than remapped: <C-s> for save in
every mode, and the fzf-lua pickers on <leader><space> and <leader>/. The
second of those keys is reused for commenting above.
OpenCode
These act inside the OpenCode TUI, so the tmux prefix is not involved.
| Shortcut | Action |
|---|---|
| Ctrl+R | Record a voice prompt, transcribe it, and insert the cleaned text |
Ctrl+R is
OpenCode’s factory binding for renaming a session. The managed tui.json
disables that binding so the voice plugin can own the key; rename a session with
the /rename command instead.
Source of truth
- macOS shortcuts:
config.yaml - Alacritty shortcuts:
alacritty.toml.tmpl - fish shortcuts:
binds.fish - tmux shortcuts:
tmux.conf - Neovim additions:
keymaps.luaandcustom.lua - OpenCode keybinds and voice plugin:
tui.json