aboutsummaryrefslogtreecommitdiffstatshomepage

Custom Keybinds Reference

All non-default keybinds across neovim, zellij, zsh, ghostty, and sway.

Neovim

Leader: Space | Local leader: ,

General (config/keymaps.lua)

Mode Key Action
n Esc Clear search highlight
n gV Select last inserted text
n / Scroll viewport (C-e / C-y)
v p Paste without clobbering register
n ,s Find and replace (whole file)
v ,s Find and replace (selection)
n Space x Write all buffers
n Space z Write all and quit
n Space q Quit all
t Esc Esc Exit terminal mode
n [w / ]w Prev/next warning+ diagnostic
n [e / ]e Prev/next error diagnostic
n yp Yank current file path to clipboard
:SudoWrite Write file with sudo privileges
Mode Key Action
n Ctrl-h/j/k/l Move to split/zellij pane (smart-splits)
n Space ? Show buffer-local keymaps (which-key)
n Space tq Toggle quickfix
n Space tl Toggle loclist
qf > / < Expand/collapse quickfix context

Search (plugins/search.lua)

Mode Key Action
n ,b fzf-lua buffers
n ,/ fzf-lua live grep
n ,f fzf-lua files
n Space Space fzf-lua global picker
n ,d fzf-lua diagnostics
n ,r fzf-lua resume
n ,gc Git buffer commits
v ,gc Git commits for selected range
n ,gC Git all commits
n ,gb Git branches
n ,gs Git status
n ,gS Git stash
fzf Alt-p Toggle preview
fzf Ctrl-x Open in horizontal split

LSP (plugins/lsp.lua)

Neovim 0.12 built-in defaults (not listed): grn rename, grr references, gri implementation, gO document symbols, gra code action, grt type def, grx codelens run, Ctrl-S (insert) signature help, ]d/[d diagnostic nav.

Mode Key Action
n Ctrl-] Goto definition (native)
n gD Goto declaration
n gd Goto definition (fzf-lua)
n gvd / gxd / gtd Definition in vsplit / hsplit / tab
n gvt / gxt / gtt Type definition in vsplit / hsplit / tab
n gri Implementation (fzf-lua override)
n grvi / grxi / grti Implementation in vsplit / hsplit / tab
n grr References (fzf-lua override)
n gvr / gxr / gtr References in vsplit / hsplit / tab
n Space ci Incoming calls
n Space co Outgoing calls
n gO Document symbols (fzf-lua override)
n Space ws Workspace symbols
n Space wd Workspace diagnostics
n Space th Toggle inlay hints
n,v Space f Format buffer (conform.nvim)

Git (plugins/git.lua)

Mode Key Action
n Space go Open Neogit
n,v Space gy Copy git permalink
n ]c / [c Next/prev git change (or diff hunk)
n Space hs Stage hunk
n Space hr Reset hunk
v Space hs Stage hunk (visual)
v Space hr Reset hunk (visual)
n Space hS Stage buffer
n Space hR Reset buffer
n Space hp Preview hunk
n Space hb Blame line
n Space tb Toggle blame line
n Space hd Diff against index
n Space hD Diff against last commit
n Space hc Change base to index
n Space hC Change base to HEAD
n Space tgd Toggle inline deleted
n Space tgw Toggle word diff
n Space tgl Toggle line highlighting
o,x ih Git hunk text object
n ]x / [x Next/prev git conflict

Git Rebase (after/ftplugin/gitrebase.lua)

Mode Key Action
n,v gc Cycle action
n,v gp Pick
n,v ge Edit
n,v gf Fixup
n,v gd Drop
n,v gs Squash
n,v gr Reword

Editing (plugins/editing.lua)

Mode Key Action
n Ctrl-a / Ctrl-x Increment / decrement (dial.nvim)
v Ctrl-a / Ctrl-x Increment / decrement (visual)
v g Ctrl-a / g Ctrl-x Sequential increment / decrement
x Space re Extract function
x Space rf Extract function to file
x Space rv Extract variable
n Space rI Inline function
n,x Space ri Inline variable
n Space rb Extract block
n Space rB Extract block to file
n Space rp Debug printf
n,x Space rV Debug print variable
n Space rc Cleanup debug statements

Treesitter (plugins/treesitter.lua)

Mode Key Action
n,v Alt-k / Alt-j Treewalker up / down
n,v Alt-h / Alt-l Treewalker left / right
n Shift-Alt-k / Shift-Alt-j Treewalker swap up / down
n Shift-Alt-h / Shift-Alt-l Treewalker swap left / right

AI (plugins/ai.lua)

Mode Key Action
n Space p Accept Copilot NES + goto end
n Esc Dismiss Copilot NES
i Ctrl-f Accept Copilot NES (insert mode)
n Space tc Toggle Copilot

Completion (plugins/completion.lua)

Uses blink.cmp cmdline preset defaults plus:

Mode Key Action
i CR Accept completion

Debug (plugins/debug.lua)

Mode Key Action
n Space td Toggle debug mode (debugmaster)

Runner (plugins/runner.lua)

Mode Key Action
n Space to Toggle Overseer
n Space ob Build (just build, no prompt)
n Space oB Build (just build, with prompt)
n Space ot Test (just test, no prompt)
n Space oT Test (just test, with prompt)
n Space of Test current file (no prompt)
n Space oF Test current file (with prompt)
n Space od Debug test file (no prompt)
n Space oD Debug test file (with prompt)
n Space oa Autofix
n Space or Run task picker
n Space os Overseer shell
n Space ol Restart last task

Autocmds (config/autocmds.lua)

Filetype Key Action
help, qf, checkhealth, etc. q Close buffer

Zellij

All binds are in shared_except "locked" mode (active everywhere except locked mode).

Key Action
Alt-1 through Alt-9 Go to tab N
Alt-t New tab
Alt-[ / Alt-] Previous / next tab
Alt-\ Cycle swap layouts (reset sizes)
Alt-w Toggle pane fullscreen
Alt-x Close focused pane
Alt-| Vertical split (new pane right)
Alt-_ Horizontal split (new pane below)
Alt-e Edit scrollback
Alt-q Detach session
Alt-- / Alt-= Resize decrease / increase
Ctrl-h/j/k/l Move focus (vim-zellij-navigator)
Alt-Shift-P Enter Pane mode
Alt-Shift-T Enter Tab mode
Alt-Shift-R Enter Resize mode
Alt-Shift-S Enter Scroll mode
Alt-Shift-O Enter Session mode
Alt-Shift-Z Enter Locked mode
Alt-Shift-Q Quit zellij

Mode-entry keys are relocated from their zellij defaults (Ctrl-p/t/r/s/o/g/q, Ctrl-b TMUX dropped) to Alt-Shift-* so the Ctrl-* keys pass through to zsh and nvim. Only Ctrl-h/j/k/l remain intercepted (for pane navigation).

Zsh

Emacs mode (bindkey -e) is the base.

Custom bindings (.zshrc)

Key Action
Ctrl-U Backward kill line
Ctrl-Right Forward word
Ctrl-Left Backward word
Alt-Right Forward word
Alt-Left Backward word
Ctrl-Backspace Backward kill word
Ctrl-Delete Kill word
Ctrl-Z Toggle foreground/background
Ctrl-D Exit shell (even on non-empty line)
Ctrl-X Ctrl-E Edit command in $EDITOR
Ctrl-Y Copy command line to clipboard (OSC 52)
. Smart dot expansion (.. → ../..)
Shift-Tab Accept autosuggestion
Up / Down History substring search
Ctrl-R fzf history search (built-in)
Ctrl-X Ctrl-R fzf history search + execute
Ctrl-T fzf file picker (built-in)
Alt-C fzf cd (built-in)
Alt-Shift-Y Copy last command's output (zellij only)

Ghostty

Unbound (disabled defaults)

Key Reason
Ctrl-Shift-T Zellij handles tabs
Ctrl-Shift-N Zellij handles panes
Ctrl-Shift-O Unneeded
Ctrl-Shift-Enter Zellij handles splits

Custom bindings

Key Action
Ctrl-Shift-Up / Ctrl-Shift-Down Scroll one line up / down
Ctrl-Shift-u Copy URL under cursor to clipboard
Alt-u Scroll page up
Alt-d Scroll page down
Alt-g Scroll to top
Alt-Shift-g Scroll to bottom

Yazi

Only non-default keybinds listed. See yazi --help for built-in keys.

Key Action
! Open shell here (blocking)
g r Go to git root
g . Go to dotfiles
g x Go to doxfiles
g s Go to sync
g S Go to screenshots

Shell: y function wraps yazi with cd-on-exit.

Cross-tool Shared Keys

Key Neovim Zellij Zsh Ghostty Sway
Ctrl-h/j/k/l Split nav (smart-splits) Pane nav (vim-zellij-navigator)
Alt-h/j/k/l Treewalker nav
Alt-1..9 Go to tab N
Alt-t New tab
Alt-q Detach
Alt-u Scroll page up
Alt-d Scroll page down
Super+h/j/k/l Focus direction
Super+n Dismiss notification

Sway

Mod key: Super (Mod4). Only personal additions beyond sway defaults listed.

Personal keybinds (sway/config)

Key Action
XF86AudioRaiseVolume Volume +5%
Super+Ctrl+k Volume +5% (non-XF86 alt)
XF86AudioLowerVolume Volume -5%
Super+Ctrl+j Volume -5% (non-XF86 alt)
XF86AudioMute Mute toggle
Super+m Mic mute toggle
Super+Shift+m Speaker mute toggle
XF86AudioPlay Play/pause
Super+Ctrl+space Play/pause (non-XF86 alt)
XF86AudioNext Next track
Super+Ctrl+l Next track (non-XF86 alt)
XF86AudioPrev Previous track
Super+Ctrl+h Previous track (non-XF86 alt)
XF86MonBrightnessUp Brightness +5% (brightnessctl)
Super+Ctrl+] Brightness +5% (non-XF86 alt)
XF86MonBrightnessDown Brightness -5% (brightnessctl)
Super+Ctrl+[ Brightness -5% (non-XF86 alt)
XF86AudioMicMute Mic mute toggle
XF86Bluetooth Bluetooth power toggle (bluetoothctl)
XF86ScreenSaver Lock screen + pause media (same as Super+Shift+s)
XF86Sleep Suspend system (systemctl suspend)
XF86WLAN Toggle Wi-Fi (rfkill)
XF86RFKill Toggle all radios (rfkill)
Super+Shift+Return Open ghostty with yazi (file manager)
Super+Shift+b Launch librewolf
Super+Shift+t Floating nvim with a fresh scratch txt under $XDG_RUNTIME_DIR
Super+c Floating ipython REPL (quick calculator / scratch python)
Print Region screenshot (grim+slurp)
Shift+Print Full screenshot (grim)
Super+i Dictate toggle (whisper.cpp → wtype + clipboard)
Super+Shift+o OCR region (tesseract → clipboard)
Super+Shift+s Lock screen + pause media
Super+n Dismiss top visible notification
Super+Shift+n Dismiss all visible notifications
Super+Ctrl+n Restore last dismissed notification (undo)
XF86Favorites Notification picker (Enter copies + dismisses)
Super+p Clipboard history picker (wofi; Enter pastes, Alt-d deletes)
Super+Shift+p Clipboard history delete entry (Enter deletes)
Super+period Emoji picker (bemoji → wofi; types + copies)
Super+Tab Next workspace
Super+Shift+Tab Previous workspace
Super+1Super+0 Switch to workspace N; re-press jumps back to previous one
Super+] Focus next window in container (monocle cycling)
Super+[ Focus prev window in container (monocle cycling)
XF86Display Toggle display mode (laptop-off/side-by-side)
XF86Tools Floating pulsemixer (audio mixer TUI)
XF86Keyboard Floating glow pager for ~/dotfiles/KEYBINDS.md
Super+z then w Display QR for clipboard (wqr)
Super+z then r Scan QR via webcam, copy to clipboard (rqr)
Super+t Toggle Thunderbird (tiled on current workspace)

System submode (sway/config)

Super+x enters mode "system" (mode name shown in waybar). One letter runs the action and exits the mode; Escape or Return exits without acting. Provides non-XF86 access to the rare hardware toggles and TUI launchers.

In system mode XF86 equivalent Action
b XF86Bluetooth Bluetooth power toggle
w XF86WLAN Wi-Fi toggle (rfkill wifi)
r XF86RFKill Toggle all radios (rfkill)
s XF86Sleep Suspend (systemctl suspend)
d XF86Display Display mode toggle
v XF86Tools Floating pulsemixer
k XF86Keyboard Floating glow KEYBINDS.md
m XF86Favorites Notification picker
n Toggle Do-Not-Disturb (mako)
Escape/Return exit submode

Typing / Input

Layout: us(altgr-intl) with Caps→Esc and Right Ctrl as Compose (xkb_options caps:escape,compose:rctrl). Normal ' " ` ~ ^ behave as-is; accents only fire through AltGr or Compose.

AltGr (Right Alt) — one or two keystrokes

Keys Output
AltGr+5
AltGr+' then v á é í ó ú ý (dead acute)
AltGr+~ then v ã õ ñ (dead tilde)
AltGr+^ then v â ê î ô û (dead circumflex)
AltGr+` v à è ì ò ù (dead grave)
AltGr+, then c ç (dead cedilla)
AltGr+Shift+1 ¡
AltGr+Shift+/ ¿
AltGr+s ß

Capitals: hold Shift while pressing the target letter (AltGr+' then Shift+aÁ).

Compose (Right Ctrl) — discoverable, extensible

Standard sequences from the system Compose table plus custom PT-PT extras in ~/.XCompose. Press and release Compose, then the sequence.

Sequence Output
Compose ' a á (any vowel)
Compose ~ a ã / õ / ñ
Compose ^ a â / ê / ô
Compose , c ç
Compose < < « (PT-PT)
Compose > > » (PT-PT)
Compose = e
Compose o _ º
Compose a _ ª
Compose - - - (em dash)
Compose - - . (en dash)
Compose . . .