Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
TIGRC(5)			   Tig Manual				TIGRC(5)

NAME
     tigrc - Tig configuration file

SYNOPSIS
     set   variable = value
     bind  keymap key action
     color area fgcolor bgcolor [attributes]
     source path

DESCRIPTION
     You  can  permanently set an option by putting it in the ~/.tigrc file. The
     file consists of a series of commands. Each line of the  file  may  contain
     only  one	command. Commands can span multiple lines if each line is termi-
     nated by a backslash (\) character.

     The hash mark (#) is used as a comment character. All text after  the  com-
     ment  character  to the end of the line is ignored. You can use comments to
     annotate your initialization file.

     Certain options can be manipulated at runtime via the option menu. In addi-
     tion, options can also be toggled with the :toggle prompt command or by en-
     tering the configuration command into the prompt.

     In some environments, a user's configuration will be stored in  the  alter-
     nate  location $XDG_CONFIG_HOME/tig/config. For brevity, this document will
     refer only to ~/.tigrc.

GIT CONFIGURATION
     Alternatively to using ~/.tigrc, Tig options can be set by putting them  in
     one  of  the Git configuration files, which are read by Tig on startup. See
     git-config(1) for which files to use. The following example show the  basic
     syntax to use for settings, bindings and colors.

	 [tig] show-changes = true
	 [tig "color"] cursor = yellow red bold
	 [tig "bind"] generic = P parent

     In  addition  to  tig-specific  options, the following Git options are read
     from the Git configuration:

     color.*
	 Colors for the various UI types. Can be configured via  the  git-colors
	 setting.

     core.abbrev
	 The width of the commit ID. See also id-width option.

     core.editor
	 The editor command. Can be overridden by setting TIG_EDITOR or GIT_EDI-
	 TOR.

     core.worktree
	 The path to the root of the working tree.

     gui.encoding
	 The encoding to use for displaying of file content.

     i18n.commitencoding
	 The encoding used for commits. The default is UTF-8.

SET COMMAND
     A few selective variables can be configured via the set command. The syntax
     is:

	 set variables = value

     Use += to append value to a string variable.

     Examples:

	 set commit-order = topo	 # Order commits topologically
	 set git-colors = no		 # Do not read Git's color settings.
	 set horizontal-scroll = 33%	 # Scroll 33% of the view width
	 set blame-options = -C -C -C	 # Blame lines from other files
	 set log-options += --minimal	 # Use minimal diff algorithm

	 # Wrap branch names with () and tags with <>
	 set reference-format = (branch) <tag>

	 # Configure blame view columns using command spanning multiple lines.
	 set blame-view = \
		 date:default \
		 author:abbreviated \
		 committer:abbreviated \
		 file-name:auto \
		 id:yes,color \
		 line-number:yes,interval=5 text

     Or in the Git configuration files:

	 [tig]
		 line-graphics = no	 # Disable graphics characters
		 tab-size = 8		 # Number of spaces per tab

     The type of variables is either bool, int, string, or mixed.

     Valid bool values
	 To  set  a  bool variable to true use either "1", "true", or "yes". Any
	 other value will set the variable to false.

     Valid int values
	 A non-negative integer.

     Valid string values
	 A string of characters. Optionally, use either ' or " as delimiters.

     Valid mixed values
	 These values are composites of the above types. The  valid  values  are
	 specified in the description.

   Variables
     The following variables can be set:

     diff-options (string)
	 A  space-separated  string  of  diff  options	to use in the diff view.
	 git-show(1) is used for formatting and always passes --patch-with-stat.
	 Can control display of commit header metadata, passing option --format.
	 This option overrides any options specified in the TIG_DIFF_OPTS  envi-
	 ronment  variable  (described	in  tig(1)), but is itself overridden by
	 diff flags given on the command line invocation.

     blame-options (string)
	 A space-separated string of default blame  options.  Can  be  used  for
	 telling git-blame(1) how to detect the origin of lines. The options are
	 ignored  when	Tig  is started in blame mode and given blame options on
	 the command line.

     log-options (string)
	 A space-separated string of default options that should  be  passed  to
	 the  git-log(1) command used by the log view. Options can be overridden
	 by command line options. Used internally override  custom  `pretty.for-
	 mat' settings that break the log view.

     main-options (string)
	 A  space-separated  string  of default options that should be passed to
	 the git-log(1) command used by the main view. Options can be overridden
	 by command line options.

     reference-format (string)
	 A space-separated string of format strings used for  formatting  refer-
	 ence names. Wrap the name of the reference type with the characters you
	 would	like to use for formatting, e.g.  [tag] and <remote>. If no for-
	 mat is specified for local-tag, the format for tag is used.  Similarly,
	 if  no format is specified for tracked-remote, the format for remote is
	 used, and if no format is specified for any other reference  type,  the
	 format for branch is used. Prefix with hide: to not show that reference
	 type, e.g.  hide:remote. Supported reference types are:

	 *   head : The current HEAD.

	 *   tag : An annotated tag.

	 *   local-tag : A lightweight tag.

	 *   remote : A remote.

	 *   tracked-remote : The remote tracked by current HEAD.

	 *   replace : A replaced reference.

	 *   branch : A branch.

	 *   stash : The stash.

	 *   note : Notes.

	 *   prefetch : Refs prefetched by git maintenance.

	 *   other : Any other reference.

     line-graphics (mixed) [ascii|default|utf-8|auto|<bool>]
	 What  type of character graphics for line drawing. "auto" means "utf-8"
	 if the locale is UTF-8, "default" otherwise.

     truncation-delimiter (mixed) [utf-8|<string>]
	 A single character to draw where columns are truncated. The default  is
	 "~".  The special value "utf-8" refers to the character "..." ("Midline
	 Horizontal Ellipsis").

     horizontal-scroll (mixed)
	 Interval to scroll horizontally in each step. Can be  specified  either
	 as  the  number  of  columns,	e.g.   5, or as a percentage of the view
	 width, e.g.  33%, where the maximum is 100%. For percentages it is  al-
	 ways  ensured	that  at least one column is scrolled. The default is to
	 scroll 50% of the view width.

     git-colors (list)
	 A space-separated list of "key=value" pairs where  the  key  is  a  Git
	 color	name  and  the	value  is  a  Tig  color name, e.g. "branch.cur-
	 rent=main-head" and "grep.filename=grep.file". Set to "no" to disable.

     show-notes (mixed) [<reference>|<bool>]
	 Whether to show notes for a commit. When set to a  note  reference  the
	 reference is passed to git show --notes=. Notes are enabled by default.

     show-changes (bool)
	 Whether to show staged and unstaged changes in the main view.

     show-untracked (bool)
	 Whether to show also untracked changes in the main view.

     vertical-split (mixed) [auto|<bool>]
	 Whether  to split the view horizontally or vertically. "auto" (which is
	 the default) means that it will depend on the window  dimensions.  When
	 true  vertical  orientation  is used, and false sets the orientation to
	 horizontal.

     split-view-height (mixed)
	 The height of the bottom view in a horizontally split display.  Can  be
	 specified  either as the number of rows, e.g.	5, or as a percentage of
	 the view height, e.g.	80%, where the maximum is 100%. It is always en-
	 sured that the smaller of the views is at least four rows high. The de-
	 fault is 67%.

     split-view-width (mixed)
	 Width of the right-most view in a  vertically	split  display.  Can  be
	 specified  either  as the number of column, e.g.  5, or as a percentage
	 of the view width, e.g.  80%, where the maximum is 100%. It  is  always
	 ensured  that	the  smaller of the views is at least four columns wide.
	 The default is 50%.

     status-show-untracked-dirs (bool)
	 Show untracked directories contents in the status view (analog  to  git
	 ls-files --directory option). On by default.

     status-show-untracked-files (bool)
	 Show  untracked  files in the status view (mirrors Git's status.showUn-
	 trackedFiles option). On by default.

     tab-size (int)
	 Number of spaces per tab. The default is 8 spaces.

     diff-context (int)
	 Number of context lines to show for diffs.

     word-diff (bool)
	 Show a word diff. Only plain mode is supported. Off by default.

     diff-highlight (mixed)
	 Whether to highlight diffs using Git's diff-highlight program. Defaults
	 to false. When set to true then diff-highlight is used, else the option
	 value is used as the path. When this option is in  effect,  highlighted
	 regions   are	 governed   by	 color	 diff-add-highlight   and  color
	 diff-del-highlight.

     diff-indicator (bool)
	 Show +/- signs in the diff view. On by default.

     ignore-space (mixed) [no|all|some|at-eol|<bool>]
	 Ignore space changes in diff view. By default no space changes are  ig-
	 nored.  Changing  this  to  "all",  "some" or "at-eol" is equivalent to
	 passing    "--ignore-all-space",     "--ignore-space"	   or	  "--ig-
	 nore-space-at-eol" respectively to git diff or git show.

	 Warning: when ignore-space is set to some, all or at-eol, then the sta-
	 tus-update and status-revert may fail when updating or reverting chunks
	 containing  lines  with space changes. Similarly, stage-update-line may
	 fail when updating a line adjacent to a line with space changes.

     commit-order (enum) [auto|default|topo|date|author-date|reverse]
	 Commit ordering using the default (chronological reverse) order,  topo-
	 logical  order,  date order or reverse order. When set to "auto" (which
	 is the default), topological order is automatically used  in  the  main
	 view when the commit graph is enabled. In repositories with a long com-
	 mit  history  it is advised to set this option to "default" to speed up
	 loading of the main view.

     ignore-case (enum) [no|yes|smart-case]
	 Ignore case in searches. "smart-case" ignores case if the search string
	 doesn't contain any uppercase letters. By default, the search	is  case
	 sensitive.

     mailmap (bool)
	 Read canonical name and email addresses for authors and committers from
	 .mailmap. Off by default. See git-shortlog(1).

     wrap-lines (bool)
	 Wrap long lines. By default, lines are not wrapped. Not compatible with
	 line numbers enabled.

     wrap-search (bool)
	 Wrap around to top/bottom of view when searching. On by default.

     focus-child (bool)
	 Whether  to  focus  the child view when it is opened. When disabled the
	 focus will remain in the parent view, avoiding  reloads  of  the  child
	 view when navigating the parent view. True by default.

     send-child-enter (bool)
	 Whether  to  send "enter" key presses to the child view, even if parent
	 view is active. When disabled the child view has to be  explicitly  fo-
	 cused	to  receive  the  "enter" key presses. In practice only relevant
	 when set focus-child = no. True by default.

     editor-line-number (bool)
	 Whether to pass the selected line number to  the  editor  command.  The
	 line  number is passed as +<line-number> in front of the file name. Ex-
	 ample: vim +10 tig.c

     history-size (int)
	 Size of the persistent ~/.tig_history file when compiled with	readline
	 support. Default is 500. Set to 0 to disable.

     mouse (bool)
	 Whether  to enable mouse support. Off by default since it makes select-
	 ing text from the terminal less intuitive. When enabled hold down Shift
	 (or Option on Mac) to select text. Mouse support requires that  ncurses
	 itself support mouse events.

     mouse-scroll (int)
	 Interval  to scroll up or down using the mouse. The default is 3 lines.
	 Mouse support requires that ncurses itself  support  mouse  events  and
	 that you have enabled mouse support in ~/.tigrc with set mouse = true.

     mouse-wheel-cursor (bool)
	 Whether  to  prefer  moving the cursor to scrolling the view when using
	 the mouse wheel. Off by default. Combines well with set mouse-scroll  =
	 1.  Mouse support requires that ncurses itself support mouse events and
	 that you have enabled mouse support in ~/.tigrc with set mouse = true.

     pager-autoscroll (bool)
	 Whether to scroll automatically the pager view while loading. Move  the
	 cursor out of the last line to stop scrolling and back in to resume.

     recurse-tree (bool)
	 Whether to show all files recursively in the tree view.

     pgrp (bool)
	 Make  tig  process-group  leader  when starting and clean all processes
	 when exiting. Off by default. Do not enable this option if you are  us-
	 ing  a Zsh version affected by zsh-workers/43379. Run xclip with setsid
	 to keep clipboard content after exiting tig. If you are using	git-cre-
	 dential-cache helper, set option credentialCache.ignoreSIGHUP.

     start-on-head (bool)
	 Start with cursor on HEAD commit.

     refresh-mode (mixed) [manual|auto|after-command|periodic|<bool>]
	 Configures  how  views  are refreshed based on modifications to watched
	 files in the repository. When set to manual, nothing is refreshed auto-
	 matically. When set to auto, views are refreshed when a modification is
	 detected in another view. When set to after-command only refresh  after
	 returning from an external command. When set to periodic, visible views
	 are refreshed periodically using refresh-interval.

     refresh-interval (int)
	 Interval  in  seconds	between  view  refresh	update	checks	when re-
	 fresh-mode is set to periodic.

     file-args (args)
	 Command line arguments referring to files.  These  are  filtered  using
	 git-rev-parse(1).

     rev-args (args)
	 Command line arguments referring to revisions. These are filtered using
	 git-rev-parse(1).

   View settings
     The view settings define the order and options for the different columns of
     a view. Each view setting expects a space-separated list of column specifi-
     cations. Column specifications starts with the column type, and can option-
     ally be followed by a colon (:) and a list of column options. E.g. the fol-
     lowing  column specification defines an author column displaying the author
     email and with a fixed width of 20 characters: author:email,width=20.

     The first option value in a column specification is always the display  op-
     tion.  When  no display value is given, yes is assumed. For display options
     expecting an enumerated value this will automatically resolve  to	the  de-
     fault  enum  value. For example, file-name will automatically have its dis-
     play setting resolve to auto.

     Specifications can also be given for a single column, for example to  over-
     ride  the	defaults  in the system tigrc file. To override a single column,
     use the column  name  as  a  suffix  after  the  view  setting  name,  e.g.
     main-view-date will allow to set the date in the main view.

     Examples:

	 # Enable both ID and line numbers in the blame view
	 set blame-view = date:default author:full committer:no file-name:auto \
			  id:yes,color line-number:yes,interval=5 text

	 # Change grep view to be similar to `git grep` format
	 set grep-view = file-name:yes line-number:yes,interval=1 text

	 # Show file sizes as units
	 set tree-view = line-number:no,interval=5 mode author:full committer:no \
			 file-size:units date:default id:no file-name

	 # Show line numbers for every 10th line in the pager view
	 set pager-view = line-number:yes,interval=10 text

	 # Shorthands to change view settings for a previously defined column
	 set main-view-date = custom
	 set main-view-date-format = "%Y-%m-%d %H:%M"
	 set blame-view-line-number = no
	 # Use Git's default commit order, even when the commit graph is enabled.
	 set commit-order = default

     The  following list shows which the available view settings and what column
     types they support:

     blob-view, diff-view, log-view, pager-view, stage-view
	 line-number, text

     blame-view
	 author, committer, date, file-name, id, line-number, text

     grep-view
	 file-name, line-number, text

     main-view, reflog-view
	 author, committer, date, commit-title, id, line-number, ref

     refs-view
	 author, committer, date, commit-title, id, line-number, ref

     stash-view
	 author, date, commit-title, id, line-number

     status-view
	 file-name, line-number, status

     tree-view
	 author, committer, date, id, file-name, file-size, line-number, mode

     Supported column types and their respective column options:

     author, committer

	 *   display (mixed) [full|abbreviated|email|email-user|<bool>]: How  to
	     display author/committer names. If set to "abbreviated" author/com-
	     mitter initials will be shown.

	 *   width  (int):  Fixed  width for the column. When set to a value be-
	     tween 1 and 10, the author/committer name will  be  abbreviated  to
	     the author/committer's initials. When set to zero, the width is au-
	     tomatically sized to fit the content.

	 *   maxwidth  (int):  Maximum width of the column. Permit automatically
	     sizing content, up to this limit. Can be specified  either  as  the
	     number  of columns, e.g.  15, or as a percentage of the view width,
	     e.g.  20%, where the maximum is 100%.

     commit-title

	 *   graph (mixed) [no|v2|v1]: Whether to show the revision graph in the
	     main view on start-up. "v1" refers  to  the  old  graph  rendering,
	     which  is	less  accurate	but faster and thus recommended in large
	     repositories. See also the line-graphics options.

	 *   refs (bool): Whether to show references (branches,  tags,	and  re-
	     motes) in the main view. Can be toggled.

	 *   overflow  (bool or int): Whether to highlight text in commit titles
	     exceeding a given width. When set to a boolean, it enables or  dis-
	     ables  the  highlighting  using  the default width of 50 character.
	     When set to an int, the assigned value is used as the maximum char-
	     acter width.

     date

	 *   display (mixed)  [relative|relative-compact|custom|default|<bool>]:
	     How  to display dates. If set to "relative" or "relative-compact" a
	     relative date will be used, e.g. "2 minutes ago" or "2m". If set to
	     "custom", the strftime(3) string format specified in  the	"format"
	     option is used.

	 *   use-author (bool): Whether to show author date instead of committer
	     date.

	 *   local  (bool):  If true, use localtime(3) to convert to local time-
	     zone. Note that relative dates always use local offsets.

	 *   format (string): format string to pass to strftime(3)  when  custom
	     display mode has been selected.

	 *   width  (int):  Fixed  width  for  the column. When set to zero, the
	     width is automatically sized to fit the content.

     file-name

	 *   display (mixed) [auto|always|<bool>]: When to display  file  names.
	     If  set  to "auto" file names are shown only when needed, e.g. when
	     running: tig blame -C <file>.

	 *   width (int): Width of the column. When set to zero,  the  width  is
	     automatically sized to fit the content.

	 *   maxwidth  (int):  Maximum width of the column. Permit automatically
	     sizing content, up to this limit. Can be specified  either  as  the
	     number  of columns, e.g.  15, or as a percentage of the view width,
	     e.g.  20%, where the maximum is 100%.

     file-size

	 *   display (mixed) [default|units|<bool>]: How to display file  sizes.
	     When  set	to  "units", sizes are shown using binary prefixes, e.g.
	     12524 bytes is shown as "12.2K".

	 *   width (int): Fixed width for the filename column. When set to zero,
	     the width is automatically sized to fit the content.

     id

	 *   display (bool): Whether to show commit IDs in the main view.

	 *   width (int) : Fixed width for the commit ID column. When unset  Tig
	     will  use	the  value of core.abbrev if found. See git-config(1) on
	     how to set core.abbrev. When set to zero the width is automatically
	     sized to fit the content of reflog (e.g.	ref/stash@{4})	IDs  and
	     otherwise default to 7.

     line-number

	 *   display (bool): Whether to show line numbers.

	 *   interval (int): Interval between line numbers.

	 *   width  (int):  Fixed  width  for  the column. When set to zero, the
	     width is automatically sized to fit the content.

     mode

	 *   display (bool): Whether to show file modes.

	 *   width (int): Fixed width for the column.  When  set  to  zero,  the
	     width is automatically sized to fit the content.

     ref

	 *   display (bool): Whether to show the reference name.

	 *   width  (int):  Fixed  width  for  the column. When set to zero, the
	     width is automatically sized to fit the content.

	 *   maxwidth (int): Maximum width of the column.  Permit  automatically
	     sizing  content,  up  to this limit. Can be specified either as the
	     number of columns, e.g.  15, or as a percentage of the view  width,
	     e.g.  20%, where the maximum is 100%.

     status

	 *   display  (mixed)  [no|short|long|<bool>]: How to display the status
	     label.

     text

	 *   commit-title-overflow (bool or int): Whether  to  highlight  commit
	     titles  exceeding	a  given  width  in the diff view. When set to a
	     boolean, it enables or disables the highlighting using the  default
	     width  of	50  character. When set to an int, the assigned value is
	     used as the maximum character width.

     All column options can be toggled. For display options, use the option name
     as the prefix followed by a dash and the  column  name.  E.g.  :toggle  au-
     thor-display  will  toggle the display option in the author column. For all
     other options use the column name followed by a dash and  then  the  option
     name  as  the suffix. E.g. :toggle commit-title-graph will toggle the graph
     option in the commit-title column. Alternatively, use the	option	menu  to
     manipulate options.

BIND COMMAND
     Using  bind  commands,  keys  can	be mapped to an action when pressed in a
     given key map. The syntax is:

	 bind keymap key action

     Examples:

	 # Add keybinding to quickly jump to the next diff chunk in the stage view
	 bind stage <Enter> :/^@@

	 # Disable the default mapping for running git-gc
	 bind generic G none

	 # User-defined external command to amend the last commit
	 bind status + !git commit --amend

	 # User-defined internal command that reloads ~/.tigrc
	 bind generic S :source ~/.tigrc

	 # UTF8-encoded characters can be used as key values.
	 bind generic o @sh -c "printf '%s' %(commit) | pbcopy"

     Or in the Git configuration files:

	 [tig "bind"]
		 # 'unbind' the default quit key binding
		 generic = Q none
		 # Cherry-pick current commit onto current branch
		 main = C !git cherry-pick %(commit)

     Keys are mapped by first searching the keybindings for  the  current  view,
     then  the keybindings for the generic keymap, and last the default keybind-
     ings. Thus, the view keybindings override	the  generic  keybindings  which
     override the built-in keybindings.

     Clear  keybinding	(unbind)  from all keymaps at once with bind generic key
     none.

     Keybindings at the line-entry prompt are typically governed by the readline
     library, and are configured separately in ~/.inputrc. See readline(1).  Tig
     respects but does not require an $if tig section in ~/.inputrc.

     Keymaps
	 Valid keymaps are: main, diff, log, reflog, help, pager, status, stage,
	 tree,	blob,  blame,  refs, stash, grep and generic. Use generic to set
	 key mapping in all keymaps (which may still be overridden by a specific
	 view keybinding). Use search to define keys for navigating  search  re-
	 sults during search.

     Key values
	 Key  values should never be quoted. Use either an ASCII or UTF8-encoded
	 character or one of the following  symbolic  key  names.  Symbolic  key
	 names	are  case insensitive and starts with "<" and ends with ">". Use
	 <Hash> to bind to the # key, since the hash mark is used as  a  comment
	 character. Use <LessThan> to bind to the < key.

     <Enter>,  <Space>,  <Backspace>, <Tab>, <Escape> or <Esc>, <Left>, <Right>,
     <Up>, <Down>, <Insert> or <Ins>, <Delete> or <Del>, <Hash>,  <LessThan>  or
     <LT>,  <Home>,  <End>, <PageUp> or <PgUp>, <PageDown> or <PgDown>, <Scroll-
     Back>  or	<SBack>,  <ScrollFwd>  or  <SFwd>,  <ShiftTab>	 or   <BackTab>,
     <ShiftLeft>, <ShiftRight>, <ShiftDelete> or <ShiftDel>, <ShiftHome>, <Shif-
     tEnd>, <SingleQuote>, <DoubleQuote>, <F1> ... <F19>

     To  define key mappings with the Ctrl key, use <Ctrl-key>. In addition, key
     combos consisting of an initial Escape key followed by a normal  key  value
     can be bound using <Esc>key.

     Examples:

	 bind main R		 refresh
	 bind main <Down>	 next
	 bind main <Ctrl-f>	 scroll-page-down
	 bind main <Esc>o	 options
	 bind main <ShiftTab>	 parent

     Notes

     *	 Tig reads keystrokes via ncurses and is subject to various limitations.
	 See ncurses(3x) and terminfo(5) (or termcap).

     *	 Ctrl-m  and  Ctrl-i cannot be bound as they conflict with Enter and Tab
	 respectively.

     *	 Case differences cannot be distinguished in control sequences	such  as
	 Ctrl-f and Ctrl-F.

     *	 Ctrl-<Space>  is typically translated to Ctrl-@, which is available for
	 binding.

     *	 Only some subset of special symbolic keys such as  <ShiftTab>	will  be
	 available in any given terminal emulator.

     *	 Ctrl-z  is  automatically used for process control and will suspend Tig
	 and open a subshell (use fg to reenter Tig).

	 Actions
	     Actions are either specified as user-defined commands (external  or
	     internal)	or using action names as described in the following sec-
	     tions.

   External user-defined command
     These actions start with one or more of the following option flags followed
     by the command that should be executed.

     !	 Run  the  command  in	 the
	 foreground    with   output
	 shown.

     @	 Run  the  command  in	 the
	 background with no output.

     +	 Run  the  command  synchro-
	 nously, and echo the  first
	 line  of output to the sta-
	 tus bar.

     ?	 Prompt the user before exe-
	 cuting the command.

     <	 Exit  Tig  after  executing
	 the command.

     >	 Re-open  Tig  instantly  in
	 the last displayed view af-
	 ter executing the command.

     Unless otherwise specified, commands are run in the foreground  with  their
     console output shown (as if ! was specified). When multiple command options
     are  specified their behavior are combined, e.g. "?<git commit" will prompt
     the user whether to execute the command and will exit Tig after completion.

     Note that if you want to use pipes or redirection in your commands then you
     must run them in a subshell, i.e. embed  your  commands  in  sh  -c  '<com-
     mands>'.

     Browsing state variables

	 User-defined  commands can optionally refer to Tig's internal state us-
	 ing the following variable names, which are substituted before commands
	 are run:

	 %(head)		       The currently  viewed  head
				       ID. Defaults to HEAD

	 %(commit)		       The currently selected com-
				       mit ID.

	 %(blob)		       The currently selected blob
				       ID.

	 %(branch)		       The    currently   selected
				       branch name.

	 %(remote)		       The currently selected  re-
				       mote   name.   For   remote
				       branches   %(branch)   will
				       contain the branch name.

	 %(tag) 		       The  currently selected tag
				       name.

	 %(refname)		       The currently selected ref-
				       erence name  including  the
				       remote	name   for  remote
				       branches.

	 %(stash)		       The   currently	  selected
				       stash name.

	 %(directory)		       The  current directory path
				       in the tree view or "."	if
				       undefined.

	 %(file)		       The    currently   selected
				       file.

	 %(file_old)		       The  old  filename  of  the
				       currently selected file.

	 %(lineno)		       The currently selected line
				       number. Defaults to 0.

	 %(lineno_old)		       The currently selected line
				       number, before the diff was
				       applied. Defaults to 0.

	 %(status)		       The  staging  status of the
				       currently selected line.

	 %(ref) 		       The  reference	given	to
				       blame or HEAD if undefined.

	 %(revargs)		       The    revision	 arguments
				       passed on the command line.

	 %(fileargs)		       The file  arguments  passed
				       on the command line.

	 %(cmdlineargs) 	       All other options passed on
				       the command line.

	 %(diffargs)		       Options	from  diff-options
				       or  TIG_DIFF_OPTS  used	by
				       the diff and stage view.

	 %(blameargs)		       Options	from blame-options
				       used by the blame view.

	 %(logargs)		       Options	from   log-options
				       used by the log view.

	 %(mainargs)		       Options	from  main-options
				       used by the main view.

	 %(prompt)		       Prompt  for  the   argument
				       value. Optionally specify a
				       custom	  prompt     using
				       "%(prompt   Enter    branch
				       name: )"

	 %(text)		       The text column of the cur-
				       rently selected line.

	 %(repo:head)		       The name of the checked out
				       branch, e.g. master

	 %(repo:head-id)	       The   commit   ID   of  the
				       checked out branch.

	 %(repo:remote) 	       The remote name	associated
				       with    the   checked   out
				       branch, e.g. origin.

	 %(repo:upstream)	       The upstream branch associ-
				       ated with the  checked  out
				       branch, e.g. origin/master.

	 %(repo:cdup)		       The  path  to change direc-
				       tory  to   the	repository
				       root, e.g. ../

	 %(repo:prefix) 	       The path prefix of the cur-
				       rent  work  directory,  e.g
				       subdir/.

	 %(repo:git-dir)	       The path to the Git  direc-
				       tory, e.g. /src/repo/.git.

	 %(repo:worktree)	       The  worktree  path, if de-
				       fined.

	 %(repo:is-inside-work-tree)   Whether Tig is running  in-
				       side  a	work  tree, either
				       true or false.

	 Examples:

	     # Save the current commit as a patch file when the user selects a commit
	     # in the main view and presses 'S'.
	     bind main S !git format-patch -1 %(commit)

	     # Create and checkout a new branch; specify custom prompt
	     bind main B ?git checkout -b "%(prompt Enter new branch name: )"

	     # Show commit statistics for the author under the cursor
	     bind main U +sh -c 'git --no-pager shortlog -s --author="$(git show -s --format=%aE %(commit))" </dev/tty'

     Advanced shell-like commands

	 If your command requires use of dynamic features,  such  as  subshells,
	 expansion  of	environment  variables	and process control, this can be
	 achieved by using a shell command:

	 Example 1. Configure a binding to copy the current  commit  ID  to  the
	 clipboard.

	     bind generic I @sh -c "echo -n %(commit) | xclip -selection c"

	 Or by using a combination of Git aliases and Tig external commands. The
	 following  example  entries  can  be  put  in	either the .gitconfig or
	 .git/config file:

	 Example 2. Git configuration  which  binds  Tig  keys	to  Git  command
	 aliases.

	     [alias]
		     gitk-bg = !"gitk HEAD --not $(git rev-parse --remotes) &"
		     publish = !"for i in origin public; do git push $i; done"
	     [tig "bind"]
		     generic = V @git gitk-bg
		     generic = > !git publish

   Internal user-defined commands
     Actions beginning with a : will be run and interpreted as internal commands
     and  act  similar to commands run via Tig's prompt. Valid internal commands
     are configuration file options (as described in this  document)  and  pager
     view commands. Examples:

	 # Reload ~/.tigrc when 'S' is pressed
	 bind generic S :source .tigrc

	 # Change diff view to show all commit changes regardless of file limitations
	 bind diff F :set diff-options = --full-diff

	 # Show the output of git-reflog(1) in the pager view
	 bind generic W :!git reflog

	 # Search for previous diff (c)hunk and next diff header
	 bind stage 2 :?^@@
	 bind stage D :/^diff --(git|cc)

	 bind main I :toggle id 			 # Show/hide the ID column
	 bind diff D :toggle diff-options --minimal	 # Use minimal diff algorithm
	 bind diff [ :toggle diff-context -3		 # Decrease context (-U arg)
	 bind diff ] :toggle diff-context +3		 # Increase context
	 bind generic V :toggle split-view-height -10%	 # Decrease split height

     Similar  to  external  commands,  pager  view commands can contain variable
     names that will be substituted before the command is run.

   Action names
     Valid action names are described below. Note, all action names are case-in-
     sensitive, and you may use -, _, and . interchangeably,  e.g.  "view-main",
     "View.Main", and "VIEW_MAIN" are the same.

     View switching

	 view-main     Show main view

	 view-diff     Show diff view

	 view-log      Show log view

	 view-reflog   Show reflog view

	 view-tree     Show tree view

	 view-blob     Show blob view

	 view-blame    Show blame view

	 view-refs     Show refs view

	 view-status   Show status view

	 view-stage    Show stage view

	 view-stash    Show stash view

	 view-grep     Show grep view

	 view-pager    Show pager view

	 view-help     Show help view

     View manipulation

	 enter		      Enter   and  open  selected
			      line

	 back		      Go  back	to  the  previous
			      view state

	 next		      Move to next

	 previous	      Move to previous

	 parent 	      Move to parent

	 view-next	      Move focus to the next view

	 refresh	      Reload and refresh view

	 maximize	      Maximize the current view

	 view-close	      Close the current view

	 view-close-no-quit   Close   the   current  view
			      without quitting

	 quit		      Close all views and quit

     View-specific actions

	 status-update	     Stage/unstage chunk or file
			     changes

	 status-revert	     Revert   chunk   or    file
			     changes

	 status-merge	     Merge  file  using external
			     tool

	 stage-update-line   Stage/unstage single line

	 stage-update-part   Stage/unstage  part  of   a
			     chunk

	 stage-split-chunk   Split current diff chunk

     Cursor navigation

	 move-up	       Move cursor one line up

	 move-down	       Move cursor one line down

	 move-page-up	       Move cursor one page up

	 move-page-down        Move cursor one page down

	 move-half-page-up     Move cursor half a page up

	 move-half-page-down   Move  cursor  half  a  page
			       down

	 move-first-line       Move cursor to first line

	 move-last-line        Move cursor to last line

	 move-next-merge       Move cursor to  next  merge
			       commit

	 move-prev-merge       Move   cursor  to  previous
			       merge commit

     Scrolling

	 scroll-line-up 	 Scroll one line up

	 scroll-line-down	 Scroll one line down

	 scroll-page-up 	 Scroll one page up

	 scroll-page-down	 Scroll one page down

	 scroll-half-page-up	 Scroll half a page up

	 scroll-half-page-down	 Scroll half a page down

	 scroll-first-col	 Scroll to  the  first	line
				 columns

	 scroll-left		 Scroll two columns left

	 scroll-right		 Scroll two columns right

     Searching

	 search        Search the view

	 search-back   Search	backwards  in  the
		       view

	 find-next     Find next search match

	 find-prev     Find previous search match

     Misc

	 edit		 Open in editor

	 prompt 	 Open the prompt

	 options	 Open the options menu

	 screen-redraw	 Redraw the screen

	 stop-loading	 Stop all loading views

	 show-version	 Show version information

	 none		 Do nothing

COLOR COMMAND
     Color commands control highlighting and the user interface styles. If  your
     terminal  supports  color and the NO_COLOR environment variable is unset or
     empty, these commands can be used to assign foreground and background  com-
     binations	to  certain  areas. Optionally, an attribute can be given as the
     last parameter. The syntax is:

	 color area fgcolor bgcolor [attributes]

     Examples:

	 # Override the default terminal colors to white on black.
	 color default		 white	 black
	 # Diff colors
	 color diff-header	 yellow  default
	 color diff-index	 blue	 default
	 color diff-chunk	 magenta default
	 color "Reported-by:"	 green	 default
	 # View-specific color
	 color tree.date	 black	 cyan	 bold
	 # Custom color
	 color "/(note|warning|error):/" yellow  default bold

     Or in the Git configuration files:

	 [tig "color"]
		 # A strange looking cursor line
		 cursor 	 = red	 default underline
		 # UI colors
		 title-blur	 = white blue
		 title-focus	 = white blue	 bold
	 # View-specific color
	 [tig "color.tree"]
		 date		 = cyan  default bold

     Area names
	 Can be either a built-in area name or a custom quoted string. The  lat-
	 ter  allows  custom color rules to be added for lines matching a quoted
	 string. Strings of the form "/.../" are interpreted as regular  expres-
	 sions.  Valid	built-in area names are described below. Note, all names
	 are case-insensitive, and you may use -, and  _  interchangeably,  e.g.
	 "Diff-Header"	and "DIFF_HEADER" are the same. View-specific colors can
	 be  defined  by  prefixing  the  view	name  to  the  area  name,  e.g.
	 "stage.diff-chunk" and "diff.diff-chunk".

     Color names
	 Valid colors include: white, black, green, magenta, blue, cyan, yellow,
	 red,  default. Use default to refer to the default terminal colors, for
	 example, to keep the background transparent when you are using a termi-
	 nal with a transparent background.

	 Colors can also be specified using the keywords  color0,  color1,  ...,
	 colorN-1  (where N is the number of colors supported by your terminal).
	 This is useful when you remap the colors for your display  or	want  to
	 enable  colors supported by 88-color and 256-color terminals. Note that
	 the color prefix is optional. If you prefer, you can specify colors di-
	 rectly by their numbers 0, 1, ..., N-1 instead, just like in  the  con-
	 figuration file of Git.

     Attribute names
	 Valid	attributes include: normal, blink, bold, dim, reverse, standout,
	 and underline. Note, not all attributes may be supported by the  termi-
	 nal.

   UI colors
     The  colors  and attributes to be used for the text that is not highlighted
     or that specify the use of the default terminal colors can be controlled by
     setting the default color option.

     Table 1. General

     default	     Override  default	terminal
		     colors (see above).

     cursor	     The  cursor  line	for  the
		     current view.

     cursor-blur     The  cursor  line	of   any
		     backgrounded view.

     status	     The  status  window showing
		     info messages.

     title-focus     The title	window	for  the
		     current view.

     title-blur      The  title  window  of  any
		     backgrounded view.

     search-result   Highlighted search result.

     delimiter	     Delimiter shown  for  trun-
		     cated lines.

     header	     The  view header lines. Use
		     status.header to color  the
		     staged,  unstaged,  and un-
		     tracked  sections	in   the
		     status	  view.      Use
		     help.header  to  color  the
		     keymap sections in the help
		     view.

     line-number     Line numbers.

     id 	     The commit ID.

     date	     The  committer  date or au-
		     thor date.

     author	     The commit author.

     committer	     The committer.

     mode	     The file mode  holding  the
		     permissions and type.

     overflow	     Title text overflow.

     directory	     The directory name.

     file	     The file name.

     file-size	     File size.

     Table 2. Main view colors

     graph-commit     The commit dot in the revi-
		      sion graph.

     palette-[0-13]   14  different  colors, used
		      for distinguishing branches
		      or commits. By default, the
		      palette uses the ASCII col-
		      ors, where the second  half
		      of  them	have the bold at-
		      tribute enabled to  give	a
		      brighter	 color.  Example:
		      palette-0 = red

     main-commit      The commit comment.

     main-annotated   The commit  comment  of  an
		      annotated commit.

     main-head	      Label    of   the   current
		      branch.

     main-remote      Label of a remote.

     main-tracked     Label of the remote tracked
		      by the current branch.

     main-tag	      Label of a signed tag.

     main-local-tag   Label of a local tag.

     main-ref	      Label of a branch.

     main-replace     Label  of  replaced  refer-
		      ence.

     main-stash       Label of the stash.

     main-note	      Label of notes.

     main-prefetch    Label	 of	reference
		      prefetched by  git  mainte-
		      nance.

     main-other       Label  of  any other refer-
		      ence.

     Table 3. Status view

     stat-none	      Empty status label.

     stat-staged      Status   flag   of   staged
		      files.

     stat-unstaged    Status   flag  of  unstaged
		      files.

     stat-untracked   Status  flag  of	untracked
		      files.

     Table 4. Help view

     help-group    Help group name.

     help-action   Help action name.

   Highlighting
     Diff markup
	 Options concerning diff start, chunks and lines added and deleted.

     diff-header,   diff-chunk,   diff-stat,   diff-add,   diff-add2,  diff-del,
     diff-del2, diff-add-highlight, diff-del-highlight

     Enhanced Git diff markup
	 Extra diff information emitted by the Git diff machinery, such as  mode
	 changes, rename detection, and similarity.

     diff-oldmode,  diff-newmode, diff-copy-from, diff-copy-to, diff-similarity,
     diff-index

     Pretty print commit headers
	 Commit diffs and the revision logs are usually formatted  using  pretty
	 printed  headers  , unless --pretty=raw was given. This includes lines,
	 such as merge info, commit ID, and author and committer date.

     pp-refs, pp-reflog, pp-reflogmsg, pp-merge

     Raw commit header
	 Usually shown when --pretty=raw is given, however commit is pretty much
	 omnipresent.

     commit, parent, tree, author, committer

     Commit message
	 Most common trailer lines (e.g.  Signed-off-by) are colorized.  Charac-
	 ters  in  the	commit	title  exceeding a predefined width can be high-
	 lighted.

     Tree markup
	 Colors for information of the tree view.

     tree-dir, tree-file

SOURCE COMMAND
     Source commands make it possible to read  additional  configuration  files.
     Sourced  files  are included in-place, meaning when a source command is en-
     countered the file will be immediately read. Any commands later in the cur-
     rent configuration file will take precedence.

     If the given path does not exist, tig will proceed with a warning. Give the
     -q parameter to suppress the warning.

     The syntax is:

	 source [-q] path

     Examples:

	 source ~/.tig/colorscheme.tigrc
	 source ~/.tig/keybindings.tigrc

COPYRIGHT
     Copyright (c) 2006-2026 Jonas Fonseca <jonas.fonseca@gmail.com[1]>

     This program is free software; you can redistribute it and/or modify it un-
     der the terms of the GNU General Public License as published  by  the  Free
     Software  Foundation;  either version 2 of the License, or (at your option)
     any later version.

SEE ALSO
     tig(1), tigmanual(7), git(7), git-config(1)

NOTES
      1. jonas.fonseca@gmail.com
	 mailto:jonas.fonseca@gmail.com

Tig 2.6.1			   2026-06-13				TIGRC(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=tigrc&sektion=5&manpath=FreeBSD+Ports+15.1.quarterly>

home | help