1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2024-12-14 11:23:09 +02:00
lazygit/docs/keybindings/Keybindings_en.md
Jesse Duffield 845c80721f Decouple escaping from quitting
When a user is not entering text into a prompt, the 'q' key should immediately
quit the application. On the other hand, the 'esc' key should cancel/close/go-back
to the previous context.

If we're at the surface level (nothing to cancel/close) and the user hits the
escape key, the default behaviour is to close the app, however we now have a
`quitOnTopLevelReturn` config key to override this.

I actually think from the beginning we should have made this config option
default to false rather than true which is the default this PR gives it,
but I don't want to anger too many people familiar with the existing behaviour.
2020-07-18 20:00:48 +10:00

7.2 KiB

Lazygit Keybindings

Global Keybindings

  pgup: scroll up main panel (fn+up)
  pgdown: scroll down main panel (fn+down)
  m: view merge/rebase options
  ctrl+p: view custom patch options
  P: push
  p: pull
  R: refresh
  x: open menu
  z: undo (via reflog) (experimental)
  ctrl+z: redo (via reflog) (experimental)
  +: next screen mode (normal/half/fullscreen)
  _: prev screen mode
  :: execute custom command
  |: view scoping options
  ctrl+e: open diff menu

Branches Panel

  ]: next tab
  [: previous tab

Branches Panel (Branches Tab)

  space: checkout
  o: create pull request
  c: checkout by name
  F: force checkout
  n: new branch
  d: delete branch
  r: rebase checked-out branch onto this branch
  M: merge into currently checked out branch
  i: show git-flow options
  f: fast-forward this branch from its upstream
  g: view reset options
  R: rename branch
  ctrl+o: copy branch name to clipboard
  ,: previous page
  .: next page
  <: scroll to top
  /: start search
  >: scroll to bottom

Branches Panel (Remote Branches (in Remotes tab))

  esc: return to remotes list
  g: view reset options
  space: checkout
  n: new branch
  M: merge into currently checked out branch
  d: delete branch
  r: rebase checked-out branch onto this branch
  u: set as upstream of checked-out branch
  ,: previous page
  .: next page
  <: scroll to top
  /: start search
  >: scroll to bottom

Branches Panel (Remotes Tab)

  f: fetch remote
  n: add new remote
  d: remove remote
  e: edit remote
  ,: previous page
  .: next page
  <: scroll to top
  /: start search
  >: scroll to bottom

Branches Panel (Tags Tab)

  space: checkout
  d: delete tag
  P: push tag
  n: create tag
  g: view reset options
  ,: previous page
  .: next page
  <: scroll to top
  /: start search
  >: scroll to bottom

Commit Files Panel

  esc: go back
  c: checkout file
  d: discard this commit's changes to this file
  o: open file
  space: toggle file included in patch
  enter: enter file to add selected lines to the patch
  ,: previous page
  .: next page
  <: scroll to top
  /: start search
  >: scroll to bottom

Commits Panel

  ]: next tab
  [: previous tab

Commits Panel (Commits Tab)

  s: squash down
  r: reword commit
  R: rename commit with editor
  g: reset to this commit
  f: fixup commit
  F: create fixup commit for this commit
  S: squash above commits
  d: delete commit
  ctrl+j: move commit down one
  ctrl+k: move commit up one
  e: edit commit
  A: amend commit with staged changes
  p: pick commit (when mid-rebase)
  t: revert commit
  c: copy commit (cherry-pick)
  ctrl+o: copy commit SHA to clipboard
  C: copy commit range (cherry-pick)
  v: paste commits (cherry-pick)
  enter: view commit's files
  space: checkout commit
  T: tag commit
  ctrl+r: reset cherry-picked (copied) commits selection
  ,: previous page
  .: next page
  <: scroll to top
  /: start search
  >: scroll to bottom

Commits Panel (Reflog Tab)

  space: checkout commit
  g: view reset options
  ,: previous page
  .: next page
  <: scroll to top
  /: start search
  >: scroll to bottom

Files Panel

  c: commit changes
  w: commit changes without pre-commit hook
  A: amend last commit
  C: commit changes using git editor
  space: toggle staged
  d: view 'discard changes' options
  e: edit file
  o: open file
  i: add to .gitignore
  r: refresh files
  s: stash changes
  S: view stash options
  a: stage/unstage all
  D: view reset options
  enter: stage individual hunks/lines
  f: fetch
  g: view upstream reset options
  ,: previous page
  .: next page
  <: scroll to top
  /: start search
  >: scroll to bottom

Main Panel (Merging)

  esc: return to files panel
  space: pick hunk
  b: pick both hunks
  : select previous conflict
  : select next conflict
  : select top hunk
  : select bottom hunk
  z: undo

Main Panel (Normal)

  : scroll down (fn+up)
  : scroll up (fn+down)

Main Panel (Patch Building)

  esc: exit line-by-line mode
  : select previous line
  : select next line
  : select previous hunk
  : select next hunk
  space: add/remove line(s) to patch
  v: toggle drag select
  V: toggle drag select
  a: toggle select hunk

Main Panel (Staging)

  esc: return to files panel
  space: toggle line staged / unstaged
  d: delete change (git reset)
  tab: switch to other panel
  : select previous line
  : select next line
  : select previous hunk
  : select next hunk
  e: edit file
  o: open file
  v: toggle drag select
  V: toggle drag select
  a: toggle select hunk
  c: commit changes
  w: commit changes without pre-commit hook
  C: commit changes using git editor

Menu Panel

  esc: close menu
  ,: previous page
  .: next page
  <: scroll to top
  /: start search
  >: scroll to bottom

Stash Panel

  space: apply
  g: pop
  d: drop
  ,: previous page
  .: next page
  <: scroll to top
  /: start search
  >: scroll to bottom

Status Panel

  e: edit config file
  o: open config file
  u: check for update
  enter: switch to a recent repo