1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2024-12-04 10:34:55 +02:00
lazygit/docs/Config.md
2020-03-01 10:57:12 +11:00

6.5 KiB

User Config

Default path for the config file:

  • Linux: ~/.config/jesseduffield/lazygit/config.yml
  • MacOS: ~/Library/Application Support/jesseduffield/lazygit/config.yml

Default

  gui:
    # stuff relating to the UI
    scrollHeight: 2 # how many lines you scroll by
    scrollPastBottom: true # enable scrolling past the bottom
    theme:
      lightTheme: false # For terminals with a light background
      activeBorderColor:
        - white
        - bold
      inactiveBorderColor:
        - green
      optionsTextColor:
        - blue
      selectedLineBgColor:
        - blue
    commitLength:
      show: true
    mouseEvents: true
    skipUnstageLineWarning: false
  git:
    merging:
      # only applicable to unix users
      manualCommit: false
    skipHookPrefix: WIP
    autoFetch: true
  update:
    method: prompt # can be: prompt | background | never
    days: 14 # how often an update is checked for
  reporting: 'undetermined' # one of: 'on' | 'off' | 'undetermined'
  confirmOnQuit: false
  keybinding:
    universal:
      quit: 'q'
      quit-alt1: '<c-c>' # alternative/alias of quit
      return: '<esc>' # return to previous menu, will quit if there's nowhere to return
      quitWithoutChangingDirectory: 'Q'
      togglePanel: '<tab>' # goto the next panel
      prevItem: '<up>' # go one line up
      nextItem: '<down>' # go one line down
      prevItem-alt: 'k' # go one line up
      nextItem-alt: 'j' # go one line down
      prevBlock: '<left>' # goto the previous block / panel
      nextBlock: '<right>' # goto the next block / panel
      prevBlock-alt: 'h' # goto the previous block / panel
      nextBlock-alt: 'l' # goto the next block / panel
      nextMatch: 'n'
      prevMatch: 'N'
      optionMenu: 'x' # show help menu
      optionMenu-alt1: '?' # show help menu
      select: '<space>'
      goInto: '<enter>'
      remove: 'd'
      new: 'n'
      edit: 'e'
      openFile: 'o'
      scrollUpMain: '<pgup>' # main panel scrool up
      scrollDownMain: '<pgdown>' # main panel scrool down
      scrollUpMain-alt1: 'K' # main panel scrool up
      scrollDownMain-alt1: 'J' # main panel scrool down
      scrollUpMain-alt2: '<c-u>' # main panel scrool up
      scrollDownMain-alt2: '<c-d>' # main panel scrool down
      executeCustomCommand: ':'
      createRebaseOptionsMenu: 'm'
      pushFiles: 'P'
      pullFiles: 'p'
      refresh: 'R'
      createPatchOptionsMenu: '<c-p>'
      nextTab: ']'
      prevTab: '['
      nextScreenMode: '+'
      prevScreenMode: '_'
    status:
      checkForUpdate: 'u'
      recentRepos: '<enter>'
    files:
      commitChanges: 'c'
      commitChangesWithoutHook: 'w' # commit changes without pre-commit hook
      amendLastCommit: 'A'
      commitChangesWithEditor: 'C'
      ignoreFile: 'i'
      refreshFiles: 'r'
      stashAllChanges: 's'
      viewStashOptions: 'S'
      toggleStagedAll: 'a' # stage/unstage all
      viewResetOptions: 'D'
      fetch: 'f'
    branches:
      createPullRequest: 'o'
      checkoutBranchByName: 'c'
      forceCheckoutBranch: 'F'
      rebaseBranch: 'r'
      mergeIntoCurrentBranch: 'M'
      viewGitFlowOptions: 'i'
      fastForward: 'f' # fast-forward this branch from its upstream
      pushTag: 'P'
      setUpstream: 'u' # set as upstream of checked-out branch
      fetchRemote: 'f'
    commits:
      squashDown: 's'
      renameCommit: 'r'
      renameCommitWithEditor: 'R'
      viewResetOptions: 'g'
      markCommitAsFixup: 'f'
      createFixupCommit: 'F' # create fixup commit for this commit
      squashAboveCommits: 'S'
      moveDownCommit: '<c-j>' # move commit down one
      moveUpCommit: '<c-k>' # move commit up one
      amendToCommit: 'A'
      pickCommit: 'p' # pick commit (when mid-rebase)
      revertCommit: 't'
      cherryPickCopy: 'c'
      cherryPickCopyRange: 'C'
      pasteCommits: 'v'
      tagCommit: 'T'
      toggleDiffCommit: 'i'
      checkoutCommit: '<space>'
    stash:
      popStash: 'g'
    commitFiles:
      checkoutCommitFile: 'c'
    main:
      toggleDragSelect: 'v'
      toggleDragSelect-alt: 'V'
      toggleSelectHunk: 'a'
      pickBothHunks: 'b'
      undo: 'z'

Platform Defaults

Windows

  os:
    openCommand: 'cmd /c "start "" {{filename}}"'

Linux

  os:
    openCommand: 'sh -c "xdg-open {{filename}} >/dev/null"'

OSX

  os:
    openCommand: 'open {{filename}}'

for users of VSCode

  os:
    openCommand: 'code -r {{filename}}'

Color Attributes

For color attributes you can choose an array of attributes (with max one color attribute) The available attributes are:

  • default
  • black
  • red
  • green
  • yellow
  • blue
  • magenta
  • cyan
  • white
  • bold
  • reverse # useful for high-contrast
  • underline

Light terminal theme

If you have issues with a light terminal theme where you can't read / see the text add these settings

  gui:
    theme:
      lightTheme: true
      activeBorderColor:
        - black
        - bold
      inactiveBorderColor:
        - black
      selectedLineBgColor:
        - blue

Example Coloring

border example

Keybindings

For all possible keybinding options, check Custom_Keybinding.md

Example Keybindings For Colemak Users

  keybinding:
    universal:
      prevItem-alt: 'u'
      nextItem-alt: 'e'
      prevBlock-alt: 'n'
      nextBlock-alt: 'i'
      nextMatch: '='
      prevMatch: '-'
      new: 'k'
      edit: 'o'
      openFile: 'O'
      scrollUpMain-alt1: 'U'
      scrollDownMain-alt1: 'E'
      scrollUpMain-alt2: '<c-u>'
      scrollDownMain-alt2: '<c-e>'
    files:
      ignoreFile: 'I'
    commits:
      moveDownCommit: '<c-e>'
      moveUpCommit: '<c-u>'
      toggleDiffCommit: 'l'
    branches:
      viewGitFlowOptions: 'I'

Custom pull request URLs

Some git provider setups (e.g. on-premises GitLab) can have distinct URLs for git-related calls and the web interface/API itself. To work with those, Lazygit needs to know where it needs to create the pull request. You can do so on your config.yml file using the following syntax:

services:
  "<gitDomain>": "<provider>:<webDomain>"

Where:

  • gitDomain stands for the domain used by git itself (i.e. the one present on clone URLs), e.g. git.work.com
  • provider is one of github, bitbucket or gitlab
  • webDomain is the URL where your git service exposes a web interface and APIs, e.g. gitservice.work.com