f S Path to the file in the buffer, as typed or relative to current directory. F S Full path to the file in the buffer. t S File name (tail) of file in the buffer. m F Modified flag, text is "[+]"; "[-]" if 'modifiable' is off. M F Modified flag, text is ",+" or ",-". r F Readonly flag, text is "[RO]". R F Readonly flag, text is ",RO". h F Help buffer flag, text is "[help]". H F Help buffer flag, text is ",HLP". w F Preview window flag, text is "[Preview]". W F Preview window flag, text is ",PRV". y F Type of file in the buffer, e.g., "[vim]". See 'filetype'. Y F Type of file in the buffer, e.g., ",VIM". See 'filetype'. q S "[Quickfix List]", "[Location List]" or empty. k S Value of "b:keymap_name" or 'keymap' when |:lmap| mappings are being used: "" n N Buffer number. b N Value of character under cursor. B N As above, in hexadecimal. o N Byte number in file of byte under cursor, first byte is 1. Mnemonic: Offset from start of file (with one added) O N As above, in hexadecimal. l N Line number. L N Number of lines in buffer. c N Column number (byte index). v N Virtual column number (screen column). V N Virtual column number as -{num}. Not displayed if equal to 'c'. p N Percentage through file in lines as in |CTRL-G|. P S Percentage through file of displayed window. This is like the percentage described for 'ruler'. Always 3 in length, unless translated. S S 'showcmd' content, see 'showcmdloc'. a S Argument list status as in default title. ({current} of {max}) Empty if the argument file count is zero or one. { NF Evaluate expression between "%{" and "}" and substitute result. Note that there is no "%" before the closing "}". The expression cannot contain a "}" character, call a function to work around that. See |stl-%{| below. `{%` - This is almost same as "{" except the result of the expression is re-evaluated as a statusline format string. Thus if the return value of expr contains "%" items they will get expanded. The expression can contain the "}" character, the end of expression is denoted by "%}". For example: >vim func! Stl_filename() abort return "%t" endfunc < `stl=%{Stl_filename()}` results in `"%t"` `stl=%{%Stl_filename()%}` results in `"Name of current file"` %} - End of "{%" expression ( - Start of item group. Can be used for setting the width and alignment of a section. Must be followed by %) somewhere. ) - End of item group. No width fields allowed. T N For 'tabline': start of tab page N label. Use %T or %X to end the label. Clicking this label with left mouse button switches to the specified tab page, while clicking it with middle mouse button closes the specified tab page. X N For 'tabline': start of close tab N label. Use %X or %T to end the label, e.g.: %3Xclose%X. Use %999X for a "close current tab" label. Clicking this label with left mouse button closes the specified tab page. @ N Start of execute function label. Use %X or %T to end the label, e.g.: %10@SwitchBuffer@foo.c%X. Clicking this label runs the specified function: in the example when clicking once using left mouse button on "foo.c", a `SwitchBuffer(10, 1, 'l', ' ')` expression will be run. The specified function receives the following arguments in order: 1. minwid field value or zero if no N was specified 2. number of mouse clicks to detect multiple clicks 3. mouse button used: "l", "r" or "m" for left, right or middle button respectively; one should not rely on third argument being only "l", "r" or "m": any other non-empty string value that contains only ASCII lower case letters may be expected for other mouse buttons 4. modifiers pressed: string which contains "s" if shift modifier was pressed, "c" for control, "a" for alt and "m" for meta; currently if modifier is not pressed string contains space instead, but one should not rely on presence of spaces or specific order of modifiers: use |stridx()| to test whether some modifier is present; string is guaranteed to contain only ASCII letters and spaces, one letter per modifier; "?" modifier may also be present, but its presence is a bug that denotes that new mouse button recognition was added without modifying code that reacts on mouse clicks on this label. Use |getmousepos()|.winid in the specified function to get the corresponding window id of the clicked item. < - Where to truncate line if too long. Default is at the start. No width fields allowed. = - Separation point between alignment sections. Each section will be separated by an equal number of spaces. With one %= what comes after it will be right-aligned. With two %= there is a middle part, with white space left and right of it. No width fields allowed. # - Set highlight group. The name must follow and then a # again. Thus use %#HLname# for highlight group HLname. The same highlighting is used, also for the statusline of non-current windows. * - Set highlight group to User{N}, where {N} is taken from the minwid field, e.g. %1*. Restore normal highlight with %* or %0*. The difference between User{N} and StatusLine will be applied to StatusLineNC for the statusline of non-current windows. The number N must be between 1 and 9. See |hl-User1..9|