1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2026-05-16 09:48:37 +02:00
Files
lazygit/docs-master/keybindings/Custom_Keybindings.md
Stefan Haller 6663867bb5 Change keybinding syntax to spell out full modifier names, and use + instead of -
The change to filter_menu_by_keybinding.go is needed because + now occurs in
many keybindings, so pick a different one that occurs only once.
2026-04-30 22:38:53 +02:00

4.4 KiB

Custom Keybindings

A keybinding is one of:

  • A single printable character, e.g. q, ?, 5. Uppercase letters mean shift+letter — write A, not <shift+a>.
  • A special key name in angle brackets, e.g. <enter>, <f1>, <up>.
  • A key with modifiers in angle brackets, e.g. <ctrl+c>, <ctrl+shift+up>.
  • The literal string <disabled> to disable a binding.

Modifiers

Prefix a key with one or more modifiers, joined by +:

Prefix Short form Modifier
ctrl+ c+ Ctrl
alt+ a+ Alt
shift+ s+ Shift
meta+ m+ Depends on terminal; typically ⌘ on macOS or Super/Win key, when the terminal forwards it

You can also use - instead of + as the separator. Modifiers may appear in any order, and short and long forms can be mixed. The whole binding should be wrapped in angle brackets when it has any modifiers. The following all express the same binding:

  • <ctrl+shift+up>
  • <c+s+up>
  • <ctrl-shift-up>
  • <shift+ctrl+up>

Special key names

Put in You will get
<f1><f12> F1 – F12
<insert> Insert
<delete> Delete
<home> Home
<end> End
<pgup> PageUp
<pgdown> PageDown
<up> ArrowUp
<down> ArrowDown
<left> ArrowLeft
<right> ArrowRight
<tab> Tab
<backtab> Shift+Tab
<enter> Enter
<esc> Escape
<backspace> Backspace
<space> Space
<mouse wheel up>/<mouse wheel down> Mouse wheel up/down

These can be combined with modifiers, e.g. <ctrl+up>, <ctrl+shift+f1>, <alt+enter>.

Special characters with modifiers

<minus> and <plus> are keyword forms for - and + when combined with a modifier (e.g. <ctrl+minus> for Ctrl+-). Without modifiers, write - and + directly. <space> is the keyword for the space character.

Combinations that are rejected

These look reasonable but can't actually be delivered by a terminal:

  • <shift+a> (shift alone on a rune) — terminals fold shift into the rune itself, so shift+a arrives as A. Write A instead.
  • <ctrl+A>, <alt+A>, etc. (modifier on an uppercase ASCII letter) — write <ctrl+shift+a> instead.

Terminal compatibility

Support for combinations of modifiers, and in general keybindings beyond plain letters and ctrl+letter, require a newer terminal protocol that not all terminals support.

Terminals that are known to have good support include: Ghostty, kitty, WezTerm, foot, Konsole, Alacritty, iTerm2, Windows Terminal.

The default terminal on macOS (Terminal.app) does not; I recommend to switch to either Ghostty or iTerm2 as a replacement (or one of the others above).

On Windows, a popular terminal is the MinTTY console that comes with Git for Windows; this also doesn't support the newer protocol. The recommended replacement is Windows Terminal, which is very good these days, and Git Bash runs just fine in it.

Inside tmux or screen, extended keys are stripped unless the multiplexer is configured to forward them. For tmux 3.2+:

set -g extended-keys on set -as terminal-features 'xterm*:extkeys' ​