2020-02-27 19:57:15 +02:00
# User Config
2018-08-18 05:54:39 +02:00
2020-02-05 16:40:48 +02:00
Default path for the config file:
2021-04-11 13:42:41 +02:00
- Linux: `~/.config/lazygit/config.yml`
- MacOS: `~/Library/Application Support/lazygit/config.yml`
- Windows: `%APPDATA%\lazygit\config.yml`
2021-04-11 02:25:37 +02:00
For old installations (slightly embarrassing: I didn't realise at the time that you didn't need to supply a vendor name to the path so I just used my name):
2021-04-11 13:42:41 +02:00
- Linux: `~/.config/jesseduffield/lazygit/config.yml`
- MacOS: `~/Library/Application Support/jesseduffield/lazygit/config.yml`
- Windows: `%APPDATA%\jesseduffield\lazygit\config.yml`
2019-12-05 04:35:29 +02:00
2020-02-27 19:57:15 +02:00
## Default
2018-08-18 05:54:39 +02:00
2019-07-23 13:30:05 +02:00
```yaml
2021-04-11 13:42:41 +02:00
gui:
# stuff relating to the UI
scrollHeight: 2 # how many lines you scroll by
scrollPastBottom: true # enable scrolling past the bottom
sidePanelWidth: 0.3333 # number from 0 to 1
expandFocusedSidePanel: false
mainPanelSplitMode: 'flexible' # one of 'horizontal' | 'flexible' | 'vertical'
2021-08-27 09:00:53 +02:00
language: 'auto' # one of 'auto' | 'en' | 'zh' | 'pl' | 'nl'
2021-04-11 13:42:41 +02:00
theme:
lightTheme: false # For terminals with a light background
activeBorderColor:
- white
- bold
inactiveBorderColor:
- green
optionsTextColor:
- blue
selectedLineBgColor:
- default
selectedRangeBgColor:
- blue
2021-09-29 13:53:31 +02:00
cherryPickedCommitBgColor:
- blue
cherryPickedCommitFgColor:
- cyan
2021-04-11 13:42:41 +02:00
commitLength:
show: true
mouseEvents: true
skipUnstageLineWarning: false
skipStashWarning: true
showFileTree: false # for rendering changes files in a tree format
2021-06-14 10:17:08 +02:00
showListFooter: true # for seeing the '5 of 20' message in list panels
2021-04-12 13:41:12 +02:00
showRandomTip: true
2021-04-11 14:03:55 +02:00
showCommandLog: true
2021-04-11 15:38:59 +02:00
commandLogSize: 8
2021-04-11 13:42:41 +02:00
git:
paging:
colorArg: always
useConfig: false
merging:
# only applicable to unix users
manualCommit: false
# extra args passed to `git merge` , e.g. --no-ff
args: ''
pull:
2021-04-22 17:10:41 +02:00
mode: 'auto' # one of 'auto' | 'merge' | 'rebase' | 'ff-only', auto reads from git configuration
2021-04-11 13:42:41 +02:00
skipHookPrefix: WIP
autoFetch: true
branchLogCmd: 'git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} --'
allBranchesLogCmd: 'git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium'
overrideGpg: false # prevents lazygit from spawning a separate process when using GPG
disableForcePushing: false
2021-07-16 21:13:01 +02:00
parseEmoji: false
2021-06-01 08:23:33 +02:00
os:
2021-08-04 11:43:34 +02:00
editCommand: '' # see 'Configuring File Editing' section
editCommandTemplate: '{{editor}} {{filename}}'
2021-06-05 02:04:35 +02:00
openCommand: ''
2021-04-11 13:42:41 +02:00
refresher:
refreshInterval: 10 # file/submodule refresh interval in seconds
fetchInterval: 60 # re-fetch interval in seconds
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
# determines whether hitting 'esc' will quit the application when there is nothing to cancel/close
quitOnTopLevelReturn: false
disableStartupPopups: false
notARepository: 'prompt' # one of: 'prompt' | 'create' | 'skip'
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
prevPage: ',' # go to next page in list
nextPage: '.' # go to previous page in list
gotoTop: '< ' # go to top of list
gotoBottom: '>' # go to bottom of list
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 > '
2021-05-27 16:22:33 +02:00
openRecentRepos: '< c-r > '
2021-04-11 13:42:41 +02:00
confirm: '< enter > '
confirm-alt1: 'y'
remove: 'd'
new: 'n'
edit: 'e'
openFile: 'o'
2021-04-12 19:48:06 +02:00
scrollUpMain: '< pgup > ' # main panel scroll up
scrollDownMain: '< pgdown > ' # main panel scroll down
scrollUpMain-alt1: 'K' # main panel scroll up
scrollDownMain-alt1: 'J' # main panel scroll down
scrollUpMain-alt2: '< c-u > ' # main panel scroll up
scrollDownMain-alt2: '< c-d > ' # main panel scroll down
2021-04-11 13:42:41 +02:00
executeCustomCommand: ':'
createRebaseOptionsMenu: 'm'
pushFiles: 'P'
pullFiles: 'p'
refresh: 'R'
createPatchOptionsMenu: '< c-p > '
nextTab: ']'
prevTab: '['
nextScreenMode: '+'
prevScreenMode: '_'
undo: 'z'
redo: '< c-z > '
filteringMenu: '< c-s > '
diffingMenu: 'W'
diffingMenu-alt: '< c-e > ' # deprecated
copyToClipboard: '< c-o > '
submitEditorText: '< enter > '
2021-07-29 14:15:26 +02:00
appendNewline: '< a-enter > '
extrasMenu: '@'
toggleWhitespaceInDiffView: '< c-w > '
2021-04-11 13:42:41 +02:00
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'
toggleTreeView: '`'
branches:
createPullRequest: 'o'
2021-04-21 15:05:57 +02:00
viewPullRequestOptions: 'O'
2021-04-11 13:42:41 +02:00
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'
checkoutCommit: '< space > '
resetCherryPick: '< c-R > '
copyCommitMessageToClipboard: '< c-y > '
stash:
popStash: 'g'
commitFiles:
checkoutCommitFile: 'c'
main:
toggleDragSelect: 'v'
toggleDragSelect-alt: 'V'
toggleSelectHunk: 'a'
pickBothHunks: 'b'
submodules:
init: 'i'
update: 'u'
bulkMenu: 'b'
2018-08-18 05:54:39 +02:00
```
2020-02-27 19:57:15 +02:00
## Platform Defaults
2018-09-01 06:35:46 +02:00
2020-02-27 19:57:15 +02:00
### Windows
2018-09-01 06:35:46 +02:00
2019-07-23 13:30:05 +02:00
```yaml
2021-04-11 13:42:41 +02:00
os:
openCommand: 'cmd /c "start "" {{filename}}"'
2018-09-01 06:35:46 +02:00
```
2020-02-27 19:57:15 +02:00
### Linux
2018-09-01 06:35:46 +02:00
2019-07-23 13:30:05 +02:00
```yaml
2021-04-11 13:42:41 +02:00
os:
openCommand: 'sh -c "xdg-open {{filename}} >/dev/null"'
2018-09-01 06:35:46 +02:00
```
2020-02-27 19:57:15 +02:00
### OSX
2018-09-01 06:35:46 +02:00
2019-07-23 13:30:05 +02:00
```yaml
2021-04-11 13:42:41 +02:00
os:
openCommand: 'open {{filename}}'
2018-09-01 06:35:46 +02:00
```
2021-06-01 18:33:16 +02:00
### Configuring File Editing
2021-06-05 02:04:35 +02:00
Lazygit will edit a file with the first set editor in the following:
2021-06-01 08:23:33 +02:00
1. config.yaml
2021-06-05 02:04:35 +02:00
2021-06-01 08:23:33 +02:00
```yaml
os:
2021-08-04 11:43:34 +02:00
editCommand: 'vim' # as an example
2021-06-01 08:23:33 +02:00
```
2021-06-05 02:04:35 +02:00
2. \$(git config core.editor)
3. \$GIT_EDITOR
4. \$VISUAL
5. \$EDITOR
6. \$(which vi)
2021-06-01 08:23:33 +02:00
2021-06-01 18:33:16 +02:00
Lazygit will log an error if none of these options are set.
2021-06-01 08:23:33 +02:00
2021-08-20 18:01:34 +02:00
You can specify a line number you are currently at when in the line-by-line mode.
2021-08-20 15:39:08 +02:00
```yaml
os:
editCommand: 'vim'
editCommandTemplate: '{{editor}} +{{line}} {{filename}}'
```
or
```yaml
os:
editCommand: 'code'
editCommandTemplate: '{{editor}} --goto {{filename}}:{{line}}'
```
2021-08-23 01:33:05 +02:00
`{{editor}}` in `editCommandTemplate` is replaced with the value of `editCommand` .
2021-08-20 15:39:08 +02:00
2020-02-27 19:57:15 +02:00
### Recommended Config Values
2018-09-01 06:35:46 +02:00
for users of VSCode
2019-07-23 13:30:05 +02:00
```yaml
2021-04-11 13:42:41 +02:00
os:
openCommand: 'code -rg {{filename}}'
2018-09-01 06:35:46 +02:00
```
2020-02-27 19:57:15 +02:00
## Color Attributes
2018-08-18 05:54:39 +02:00
For color attributes you can choose an array of attributes (with max one color attribute)
The available attributes are:
2021-07-25 12:18:10 +02:00
**Colors**
2018-08-18 05:54:39 +02:00
- black
- red
- green
- yellow
- blue
- magenta
- cyan
- white
2021-07-27 15:00:37 +02:00
- '#ff00ff'
2021-07-25 12:18:10 +02:00
**Modifiers**
2018-08-18 05:54:39 +02:00
- bold
2021-07-25 12:18:10 +02:00
- default
2018-08-18 05:54:39 +02:00
- reverse # useful for high-contrast
- underline
2018-08-21 05:42:17 +02:00
2020-02-27 19:57:15 +02:00
## Light terminal theme
2019-10-18 09:52:32 +02:00
If you have issues with a light terminal theme where you can't read / see the text add these settings
```yaml
2021-04-11 13:42:41 +02:00
gui:
theme:
lightTheme: true
activeBorderColor:
- black
- bold
inactiveBorderColor:
- black
selectedLineBgColor:
- default
2020-05-13 13:10:00 +02:00
```
## Struggling to see selected line
2021-04-01 11:44:27 +02:00
If you struggle to see the selected line I recommend using the reverse attribute on selected lines like so:
2020-05-13 13:10:00 +02:00
```yaml
2021-04-11 13:42:41 +02:00
gui:
theme:
selectedLineBgColor:
- reverse
selectedRangeBgColor:
- reverse
2019-10-18 09:52:32 +02:00
```
2021-04-01 11:52:56 +02:00
The following has also worked for a couple of people:
2021-04-11 13:42:41 +02:00
2021-04-01 11:52:56 +02:00
```yaml
gui:
theme:
activeBorderColor:
- white
- bold
inactiveBorderColor:
- white
selectedLineBgColor:
- reverse
- blue
```
2021-04-01 11:44:27 +02:00
Alternatively you may have bold fonts disabled in your terminal, in which case enabling bold fonts should solve the problem.
If you're still having trouble please raise an issue.
2020-02-27 19:57:15 +02:00
## Example Coloring
2018-08-21 05:42:17 +02:00
2020-09-27 02:31:16 +02:00
![border example ](../../assets/colored-border-example.png )
2019-12-05 04:18:28 +02:00
2020-02-27 19:57:15 +02:00
## Keybindings
2020-04-03 08:38:46 +02:00
For all possible keybinding options, check [Custom_Keybindings.md ](https://github.com/jesseduffield/lazygit/blob/master/docs/keybindings/Custom_Keybindings.md )
2019-12-05 04:46:00 +02:00
2020-02-27 19:57:15 +02:00
### Example Keybindings For Colemak Users
2019-12-05 04:46:00 +02:00
2019-12-05 04:18:28 +02:00
```yaml
2021-04-11 13:42:41 +02:00
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 > '
undo: 'l'
redo: '< c-r > '
diffingMenu: 'M'
filteringMenu: '< c-f > '
files:
ignoreFile: 'I'
commits:
moveDownCommit: '< c-e > '
moveUpCommit: '< c-u > '
branches:
viewGitFlowOptions: 'I'
setUpstream: 'U'
2019-12-05 04:18:28 +02:00
```
2019-12-05 04:46:00 +02:00
2020-02-27 19:57:15 +02:00
## 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:
```yaml
services:
2021-04-11 13:42:41 +02:00
'< gitDomain > ': '< provider > :< webDomain > '
2020-02-27 19:57:15 +02:00
```
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`
2020-04-15 17:27:42 +02:00
## Predefined commit message prefix
2021-04-11 13:42:41 +02:00
2020-04-15 17:27:42 +02:00
In situations where certain naming pattern is used for branches and commits, pattern can be used to populate
commit message with prefix that is parsed from the branch name.
Example:
2021-04-11 13:42:41 +02:00
- Branch name: feature/AB-123
- Commit message: [AB-123] Adding feature
2020-04-15 17:27:42 +02:00
```yaml
2021-04-11 13:42:41 +02:00
git:
commitPrefixes:
my_project: # This is repository folder name
pattern: "^\\w+\\/(\\w+-\\w+).*"
replace: '[$1] '
2020-04-15 17:27:42 +02:00
```
2020-09-27 03:59:25 +02:00
## Custom git log command
You can override the `git log` command that's used to render the log of the selected branch like so:
```
git:
branchLogCmd: "git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium --oneline {{branchName}} --"
```
Result:
![](https://i.imgur.com/Nibq35B.png)
2020-11-25 04:56:58 +02:00
## Launching not in a repository behaviour
By default, when launching lazygit from a directory that is not a repository,
you will be prompted to choose if you would like to initialize a repo. You can
override this behaviour in the config with one of the following:
```yaml
# for default prompting behaviour
notARepository: 'prompt'
```
```yaml
# to skip and initialize a new repo
notARepository: 'create'
```
```yaml
# to skip without creating a new repo
notARepository: 'skip'
```