2013-09-07 09:50:55 -04:00
|
|
|
|
*airline.txt* Lean and mean status/tabline that's light as air
|
2013-08-10 19:22:42 -04:00
|
|
|
|
_ _ _ _ ~
|
|
|
|
|
__ _(_)_ __ ___ __ _(_)_ __| (_)_ __ ___ ~
|
|
|
|
|
\ \ / / | '_ ` _ \ _____ / _` | | '__| | | '_ \ / _ \ ~
|
|
|
|
|
\ V /| | | | | | |_____| (_| | | | | | | | | | __/ ~
|
|
|
|
|
\_/ |_|_| |_| |_| \__,_|_|_| |_|_|_| |_|\___| ~
|
|
|
|
|
~
|
2013-07-01 07:33:26 -04:00
|
|
|
|
==============================================================================
|
2013-07-15 10:45:47 -04:00
|
|
|
|
INTRODUCTION *airline*
|
2013-07-01 07:33:26 -04:00
|
|
|
|
|
2013-08-02 08:11:53 -04:00
|
|
|
|
vim-airline is a fast and lightweight alternative to powerline, written
|
|
|
|
|
in 100% vimscript with no outside dependencies.
|
2013-07-01 07:33:26 -04:00
|
|
|
|
|
2013-08-02 08:11:53 -04:00
|
|
|
|
==============================================================================
|
|
|
|
|
FEATURES *airline-features*
|
|
|
|
|
|
|
|
|
|
* tiny core written with extensibility in mind.
|
|
|
|
|
* integrates with many popular plugins.
|
2013-07-31 16:07:14 -04:00
|
|
|
|
* looks good with regular fonts, and provides configuration points so you
|
2013-07-07 23:12:05 -04:00
|
|
|
|
can use unicode or powerline symbols.
|
2013-08-04 15:10:44 -04:00
|
|
|
|
* optimized for speed; it loads in under a millisecond.
|
2013-07-31 16:07:14 -04:00
|
|
|
|
* fully customizable; if you know a little |statusline| syntax you can
|
2013-07-07 23:12:05 -04:00
|
|
|
|
tweak it to your needs.
|
2013-08-10 19:22:42 -04:00
|
|
|
|
* extremely easy to write themes.
|
2013-07-01 07:33:26 -04:00
|
|
|
|
|
|
|
|
|
==============================================================================
|
|
|
|
|
NAME *airline-name*
|
|
|
|
|
|
2013-07-22 17:23:41 -04:00
|
|
|
|
Where did the name come from?
|
2013-07-01 07:33:26 -04:00
|
|
|
|
|
2013-07-10 09:48:13 -04:00
|
|
|
|
I wrote this on an airplane, and since it's light as air it turned out to be a
|
2013-07-01 07:33:26 -04:00
|
|
|
|
good name :-)
|
|
|
|
|
|
|
|
|
|
==============================================================================
|
2013-07-01 19:49:40 -04:00
|
|
|
|
CONFIGURATION *airline-configuration*
|
2013-07-01 07:33:26 -04:00
|
|
|
|
|
2013-07-10 09:48:13 -04:00
|
|
|
|
There are a couple configuration values available (shown with their default
|
2013-07-01 07:33:26 -04:00
|
|
|
|
values):
|
|
|
|
|
|
2013-08-13 22:32:05 -04:00
|
|
|
|
* the separator used on the left side >
|
2013-07-01 07:33:26 -04:00
|
|
|
|
let g:airline_left_sep='>'
|
|
|
|
|
<
|
2013-08-13 22:32:05 -04:00
|
|
|
|
* the separator used on the right side >
|
2013-07-02 05:49:06 -04:00
|
|
|
|
let g:airline_right_sep='<'
|
2013-07-01 07:33:26 -04:00
|
|
|
|
<
|
2013-08-13 22:32:05 -04:00
|
|
|
|
* enable modified detection >
|
2013-07-22 17:23:41 -04:00
|
|
|
|
let g:airline_detect_modified=1
|
|
|
|
|
|
2013-08-13 22:32:05 -04:00
|
|
|
|
* enable paste detection >
|
2013-07-22 17:23:41 -04:00
|
|
|
|
let g:airline_detect_paste=1
|
|
|
|
|
<
|
2013-08-13 22:32:05 -04:00
|
|
|
|
* enable iminsert detection >
|
2013-08-26 23:07:14 -04:00
|
|
|
|
let g:airline_detect_iminsert=0
|
2013-08-04 15:10:44 -04:00
|
|
|
|
<
|
2013-08-11 10:30:02 -04:00
|
|
|
|
* determine whether inactive windows should have the left section collapsed to
|
2013-08-13 22:32:05 -04:00
|
|
|
|
only the filename of that buffer. >
|
2013-08-11 10:30:02 -04:00
|
|
|
|
let g:airline_inactive_collapse=1
|
|
|
|
|
<
|
2013-08-18 00:44:13 -04:00
|
|
|
|
* themes are automatically selected based on the matching colorscheme. this
|
|
|
|
|
can be overridden by defining a value. >
|
|
|
|
|
let g:airline_theme=
|
2013-07-01 07:33:26 -04:00
|
|
|
|
<
|
2013-08-22 19:55:04 -04:00
|
|
|
|
* if you want to patch the airline theme before it gets applied, you can
|
|
|
|
|
supply the name of a function where you can modify the palette. >
|
|
|
|
|
let g:airline_theme_patch_func = 'AirlineThemePatch'
|
|
|
|
|
function! AirlineThemePatch(palette)
|
|
|
|
|
if g:airline_theme == 'badwolf'
|
|
|
|
|
for colors in values(a:palette.inactive)
|
|
|
|
|
let colors[3] = 245
|
|
|
|
|
endfor
|
|
|
|
|
endif
|
|
|
|
|
endfunction
|
|
|
|
|
<
|
2013-09-07 14:33:47 -04:00
|
|
|
|
* enable/disable automatic population of the `g:airline_symbols` dictionary
|
2013-09-13 13:51:48 -04:00
|
|
|
|
with powerline symbols. >
|
2013-07-01 07:33:26 -04:00
|
|
|
|
let g:airline_powerline_fonts=0
|
|
|
|
|
<
|
2013-08-13 22:32:05 -04:00
|
|
|
|
* define the set of text to display for each mode. >
|
2013-08-16 10:57:36 -04:00
|
|
|
|
let g:airline_mode_map = {} " see source for the defaults
|
|
|
|
|
|
|
|
|
|
" or copy paste the following into your vimrc for shortform text
|
|
|
|
|
let g:airline_mode_map = {
|
|
|
|
|
\ '__' : '-',
|
|
|
|
|
\ 'n' : 'N',
|
|
|
|
|
\ 'i' : 'I',
|
|
|
|
|
\ 'R' : 'R',
|
|
|
|
|
\ 'c' : 'C',
|
|
|
|
|
\ 'v' : 'V',
|
|
|
|
|
\ 'V' : 'V',
|
|
|
|
|
\ '' : 'V',
|
|
|
|
|
\ 's' : 'S',
|
|
|
|
|
\ 'S' : 'S',
|
|
|
|
|
\ '' : 'S',
|
|
|
|
|
\ }
|
2013-07-04 11:39:49 -04:00
|
|
|
|
<
|
2013-07-02 07:04:36 -04:00
|
|
|
|
* define the set of filename match queries which excludes a window from having
|
2013-08-13 22:32:05 -04:00
|
|
|
|
its statusline modified >
|
2013-07-02 07:04:36 -04:00
|
|
|
|
let g:airline_exclude_filenames = [] " see source for current list
|
2013-07-02 07:00:31 -04:00
|
|
|
|
<
|
|
|
|
|
* define the set of filetypes which are excluded from having its window
|
2013-08-13 22:32:05 -04:00
|
|
|
|
statusline modified >
|
2013-07-02 07:00:31 -04:00
|
|
|
|
let g:airline_exclude_filetypes = [] " see source for current list
|
|
|
|
|
<
|
2013-07-14 15:44:16 -04:00
|
|
|
|
* defines whether the preview window should be excluded from have its window
|
|
|
|
|
statusline modified (may help with plugins which use the preview window
|
2013-08-13 22:32:05 -04:00
|
|
|
|
heavily) >
|
2013-07-14 15:44:16 -04:00
|
|
|
|
let g:airline_exclude_preview = 0
|
|
|
|
|
<
|
2013-07-15 16:19:26 -04:00
|
|
|
|
==============================================================================
|
|
|
|
|
COMMANDS *airline-commands*
|
|
|
|
|
|
|
|
|
|
:AirlineTheme {theme-name} *:AirlineTheme*
|
|
|
|
|
Displays or changes the current theme.
|
|
|
|
|
|
2013-08-08 10:42:27 -04:00
|
|
|
|
:AirlineToggleWhitespace *:AirlineToggleWhitespace*
|
|
|
|
|
Toggles whitespace detection.
|
|
|
|
|
|
2013-08-14 17:56:55 -04:00
|
|
|
|
:AirlineToggle *:AirlineToggle*
|
2013-08-21 11:14:12 -04:00
|
|
|
|
Toggles between the standard `statusline`
|
2013-08-14 17:56:55 -04:00
|
|
|
|
|
2013-07-01 19:49:40 -04:00
|
|
|
|
==============================================================================
|
|
|
|
|
CUSTOMIZATION *airline-customization*
|
|
|
|
|
|
2013-07-10 09:48:13 -04:00
|
|
|
|
The following are some unicode symbols for customizing the left/right
|
|
|
|
|
separators, as well as the powerline font glyths.
|
2013-08-27 16:44:47 -04:00
|
|
|
|
|
|
|
|
|
Note: You must define the dictionary first before setting values: >
|
|
|
|
|
let g:airline_symbols = {}
|
2013-07-01 19:49:40 -04:00
|
|
|
|
>
|
|
|
|
|
" unicode symbols
|
|
|
|
|
let g:airline_left_sep = '»'
|
|
|
|
|
let g:airline_left_sep = '▶'
|
|
|
|
|
let g:airline_right_sep = '«'
|
|
|
|
|
let g:airline_right_sep = '◀'
|
2013-08-26 23:34:02 -04:00
|
|
|
|
let g:airline_symbols.linenr = '␊'
|
|
|
|
|
let g:airline_symbols.linenr = ''
|
|
|
|
|
let g:airline_symbols.linenr = '¶'
|
|
|
|
|
let g:airline_symbols.branch = '⎇'
|
|
|
|
|
let g:airline_symbols.paste = 'ρ'
|
|
|
|
|
let g:airline_symbols.paste = 'Þ'
|
|
|
|
|
let g:airline_symbols.paste = '∥'
|
|
|
|
|
let g:airline_symbols.whitespace = 'Ξ'
|
2013-07-01 19:49:40 -04:00
|
|
|
|
|
|
|
|
|
" powerline symbols
|
|
|
|
|
let g:airline_left_sep = ''
|
2013-07-07 20:38:19 -04:00
|
|
|
|
let g:airline_left_alt_sep = ''
|
2013-07-17 22:28:21 -04:00
|
|
|
|
let g:airline_right_sep = ''
|
|
|
|
|
let g:airline_right_alt_sep = ''
|
2013-08-26 23:34:02 -04:00
|
|
|
|
let g:airline_symbols.branch = ''
|
|
|
|
|
let g:airline_symbols.readonly = ''
|
|
|
|
|
let g:airline_symbols.linenr = ''
|
2013-07-17 15:09:18 -04:00
|
|
|
|
|
|
|
|
|
" old vim-powerline symbols
|
|
|
|
|
let g:airline_left_sep = '⮀'
|
|
|
|
|
let g:airline_left_alt_sep = '⮁'
|
|
|
|
|
let g:airline_right_sep = '⮂'
|
|
|
|
|
let g:airline_right_alt_sep = '⮃'
|
2013-08-26 23:34:02 -04:00
|
|
|
|
let g:airline_symbols.branch = '⭠'
|
|
|
|
|
let g:airline_symbols.readonly = '⭤'
|
|
|
|
|
let g:airline_symbols.linenr = '⭡'
|
2013-07-01 19:49:40 -04:00
|
|
|
|
<
|
|
|
|
|
|
2013-07-10 09:48:13 -04:00
|
|
|
|
For more intricate customizations, you can replace the predefined sections
|
2013-08-23 23:02:13 -04:00
|
|
|
|
with the usual statusline syntax.
|
|
|
|
|
|
2013-08-31 19:33:31 -04:00
|
|
|
|
Note: If you define any section variables it will replace the default values
|
|
|
|
|
entirely. If you want to disable only certain parts of a section you can try
|
|
|
|
|
using variables defined in the |airline-configuration| or |airline_extensions|
|
|
|
|
|
section.
|
2013-07-04 11:39:49 -04:00
|
|
|
|
>
|
2013-08-13 16:43:04 -04:00
|
|
|
|
variable names default contents
|
|
|
|
|
----------------------------------------------------------------------------
|
2013-08-27 22:36:12 -04:00
|
|
|
|
let g:airline_section_a (mode, paste, iminsert)
|
|
|
|
|
let g:airline_section_b (hunks, branch)
|
2013-08-06 20:48:53 -04:00
|
|
|
|
let g:airline_section_c (bufferline or filename)
|
2013-08-20 19:27:55 -04:00
|
|
|
|
let g:airline_section_gutter (readonly, csv)
|
2013-08-27 22:36:12 -04:00
|
|
|
|
let g:airline_section_x (tagbar, filetype, virtualenv)
|
2013-08-06 20:48:53 -04:00
|
|
|
|
let g:airline_section_y (fileencoding, fileformat)
|
|
|
|
|
let g:airline_section_z (percentage, line number, column number)
|
2013-08-06 21:42:32 -04:00
|
|
|
|
let g:airline_section_warning (syntastic, whitespace)
|
2013-07-07 23:12:05 -04:00
|
|
|
|
|
2013-07-27 18:15:00 -04:00
|
|
|
|
" here is an example of how you could replace the branch indicator with
|
2013-07-07 23:12:05 -04:00
|
|
|
|
" the current working directory, followed by the filename.
|
|
|
|
|
let g:airline_section_b = '%{getcwd()}'
|
|
|
|
|
let g:airline_section_c = '%t'
|
2013-07-04 11:39:49 -04:00
|
|
|
|
<
|
2013-08-13 21:47:08 -04:00
|
|
|
|
==============================================================================
|
|
|
|
|
EXTENSIONS *airline-extensions*
|
|
|
|
|
|
2013-08-23 23:02:13 -04:00
|
|
|
|
Most extensions are enabled by default and lazily loaded when the
|
|
|
|
|
corresponding plugin (if any) is detected.
|
|
|
|
|
|
2013-08-31 19:33:31 -04:00
|
|
|
|
------------------------------------- *airline-default*
|
2013-08-26 21:12:00 -04:00
|
|
|
|
The default extension understands all of the `g:` variables in the
|
|
|
|
|
|airline-configuration| section, however it also has some more fine-tuned
|
|
|
|
|
configuration values that you can use.
|
|
|
|
|
|
|
|
|
|
* control which sections get truncated and at what width. >
|
|
|
|
|
let g:airline#extensions#default#section_truncate_width = {
|
2013-08-27 07:55:28 -04:00
|
|
|
|
\ 'b': 88,
|
|
|
|
|
\ 'x': 60,
|
|
|
|
|
\ 'y': 88,
|
|
|
|
|
\ 'z': 45,
|
2013-08-26 21:12:00 -04:00
|
|
|
|
\ })
|
2013-08-29 17:27:59 -04:00
|
|
|
|
|
|
|
|
|
" Note: set to an empty dictionary to disable truncation.
|
|
|
|
|
let g:airline#extensions#default#section_truncate_width = {}
|
2013-08-28 08:21:32 -04:00
|
|
|
|
<
|
2013-08-31 19:33:31 -04:00
|
|
|
|
------------------------------------- *airline-bufferline*
|
2013-08-28 08:21:32 -04:00
|
|
|
|
vim-bufferline <https://github.com/bling/vim-bufferline>
|
|
|
|
|
|
|
|
|
|
* enable/disable bufferline integration >
|
|
|
|
|
let g:airline#extensions#bufferline#enabled = 1
|
|
|
|
|
<
|
|
|
|
|
* determine whether bufferline will overwrite customization variables >
|
|
|
|
|
let g:airline#extensions#bufferline#overwrite_variables = 1
|
2013-08-26 21:12:00 -04:00
|
|
|
|
<
|
2013-08-31 19:33:31 -04:00
|
|
|
|
------------------------------------- *airline-branch*
|
2013-08-13 22:32:05 -04:00
|
|
|
|
fugitive.vim <https://github.com/tpope/vim-fugitive>
|
|
|
|
|
lawrencium <https://bitbucket.org/ludovicchabant/vim-lawrencium>
|
|
|
|
|
|
|
|
|
|
* enable/disable fugitive/lawrencium integration >
|
2013-08-19 20:13:29 -04:00
|
|
|
|
let g:airline#extensions#branch#enabled = 1
|
2013-08-13 22:32:05 -04:00
|
|
|
|
<
|
|
|
|
|
* change the text for when no branch is detected >
|
2013-08-19 19:51:30 -04:00
|
|
|
|
let g:airline#extensions#branch#empty_message = ''
|
2013-08-13 22:32:05 -04:00
|
|
|
|
<
|
2013-08-31 19:33:31 -04:00
|
|
|
|
------------------------------------- *airline-syntastic*
|
2013-08-13 22:32:05 -04:00
|
|
|
|
syntastic <https://github.com/scrooloose/syntastic>
|
|
|
|
|
|
|
|
|
|
* enable/disable syntastic integration >
|
2013-08-19 20:13:29 -04:00
|
|
|
|
let g:airline#extensions#syntastic#enabled = 1
|
2013-08-13 22:32:05 -04:00
|
|
|
|
<
|
2013-08-31 19:33:31 -04:00
|
|
|
|
------------------------------------- *airline-tagbar*
|
2013-08-13 22:32:05 -04:00
|
|
|
|
tagbar <https://github.com/majutsushi/>
|
|
|
|
|
|
|
|
|
|
* enable/disable tagbar integration >
|
2013-08-19 20:13:29 -04:00
|
|
|
|
let g:airline#extensions#tagbar#enabled = 1
|
2013-08-13 22:32:05 -04:00
|
|
|
|
<
|
2013-09-05 10:42:17 -04:00
|
|
|
|
* change how tags are displayed (:help tagbar-statusline) >
|
2013-09-05 11:21:04 -04:00
|
|
|
|
let g:airline#extensions#tagbar#flags = '' "default
|
2013-09-05 10:42:17 -04:00
|
|
|
|
let g:airline#extensions#tagbar#flags = 'f'
|
2013-09-05 11:21:04 -04:00
|
|
|
|
let g:airline#extensions#tagbar#flags = 's'
|
|
|
|
|
let g:airline#extensions#tagbar#flags = 'p'
|
2013-09-05 10:42:17 -04:00
|
|
|
|
<
|
2013-08-31 19:33:31 -04:00
|
|
|
|
------------------------------------- *airline-csv*
|
2013-08-13 21:47:08 -04:00
|
|
|
|
csv.vim <https://github.com/chrisbra/csv.vim>
|
|
|
|
|
|
2013-08-18 17:02:33 -04:00
|
|
|
|
* enable/disable csv integration for displaying the current column. >
|
2013-08-19 20:13:29 -04:00
|
|
|
|
let g:airline#extensions#csv#enabled = 1
|
2013-08-18 17:02:33 -04:00
|
|
|
|
<
|
2013-08-13 22:36:09 -04:00
|
|
|
|
* change how columns are displayed. >
|
|
|
|
|
let g:airline#extensions#csv#column_display = 'Number' (default)
|
|
|
|
|
let g:airline#extensions#csv#column_display = 'Name'
|
2013-08-18 17:02:33 -04:00
|
|
|
|
<
|
2013-08-31 19:33:31 -04:00
|
|
|
|
------------------------------------- *airline-hunks*
|
2013-08-18 17:02:33 -04:00
|
|
|
|
vim-gitgutter <https://github.com/airblade/vim-gitgutter>
|
2013-08-20 11:43:26 -04:00
|
|
|
|
vim-signify <https://github.com/mhinz/vim-signify>
|
2013-08-18 17:02:33 -04:00
|
|
|
|
|
2013-09-02 23:20:21 -04:00
|
|
|
|
* enable/disable showing a summary of changed hunks under source control. >
|
2013-08-19 20:13:29 -04:00
|
|
|
|
let g:airline#extensions#hunks#enabled = 1
|
2013-08-19 23:32:14 -04:00
|
|
|
|
<
|
|
|
|
|
* enable/disable showing only non-zero hunks. >
|
|
|
|
|
let g:airline#extensions#hunks#non_zero_only = 0
|
|
|
|
|
<
|
|
|
|
|
* set hunk count symbols. >
|
|
|
|
|
let g:airline#extensions#hunks#hunk_symbols = ['+', '~', '-']
|
|
|
|
|
<
|
2013-09-02 23:20:21 -04:00
|
|
|
|
------------------------------------- *airline-ctrlp*
|
|
|
|
|
ctrlp <https://github.com/kien/ctrlp.vim>
|
|
|
|
|
|
|
|
|
|
* configure which mode colors should ctrlp window use (takes effect
|
|
|
|
|
only if the active airline theme doesn't define ctrlp colors) >
|
|
|
|
|
let g:airline#extensions#ctrlp#color_template = 'insert' (default)
|
|
|
|
|
let g:airline#extensions#ctrlp#color_template = 'normal'
|
|
|
|
|
let g:airline#extensions#ctrlp#color_template = 'visual'
|
|
|
|
|
let g:airline#extensions#ctrlp#color_template = 'replace'
|
|
|
|
|
<
|
|
|
|
|
------------------------------------- *airline-virtualenv*
|
|
|
|
|
virtualenv <https://github.com/jmcantrell/vim-virtualenv>
|
|
|
|
|
|
|
|
|
|
* enable/disable virtualenv integration >
|
|
|
|
|
let g:airline#extensions#virtualenv#enabled = 1
|
|
|
|
|
<
|
2013-08-31 19:33:31 -04:00
|
|
|
|
------------------------------------- *airline-whitespace*
|
2013-08-19 20:35:48 -04:00
|
|
|
|
* enable/disable detection of whitespace errors. >
|
|
|
|
|
let g:airline#extensions#whitespace#enabled = 1
|
|
|
|
|
<
|
|
|
|
|
* customize the whitespace symbol. >
|
|
|
|
|
let g:airline#extensions#whitespace#symbol = '!'
|
|
|
|
|
<
|
|
|
|
|
* configure which whitespace checks to enable. >
|
|
|
|
|
let g:airline#extensions#whitespace#checks = [ 'indent', 'trailing' ]
|
|
|
|
|
<
|
|
|
|
|
* configure whether a message should be displayed. >
|
|
|
|
|
let g:airline#extensions#whitespace#show_message = 1
|
2013-08-25 22:08:04 -04:00
|
|
|
|
<
|
|
|
|
|
* configure the formatting of the warning messages. >
|
|
|
|
|
let g:airline#extensions#whitespace#trailing_format = 'trailing[%s]'
|
|
|
|
|
let g:airline#extensions#whitespace#mixed_indent_format = 'mixed-indent[%s]'
|
2013-08-19 20:35:48 -04:00
|
|
|
|
<
|
2013-09-02 23:20:21 -04:00
|
|
|
|
------------------------------------- *airline-tabline*
|
|
|
|
|
* enable/disable enhanced tabline. >
|
|
|
|
|
let g:airline#extensions#tabline#enabled = 0
|
2013-08-20 16:30:46 -04:00
|
|
|
|
<
|
2013-09-04 16:17:02 -04:00
|
|
|
|
* enable/disable displaying buffers with a single tab. >
|
|
|
|
|
let g:airline#extensions#tabline#show_buffers = 1
|
|
|
|
|
<
|
2013-09-02 23:20:21 -04:00
|
|
|
|
* configure filename match rules to exclude from the tabline. >
|
|
|
|
|
let g:airline#extensions#tabline#excludes = []
|
|
|
|
|
<
|
2013-09-04 14:06:57 -04:00
|
|
|
|
* configure how numbers are calculated in tab mode. >
|
|
|
|
|
let g:airline#extensions#tabline#tab_nr_type = 0 " # of splits (default)
|
|
|
|
|
let g:airline#extensions#tabline#tab_nr_type = 1 " tab number
|
|
|
|
|
<
|
2013-09-06 20:43:51 -04:00
|
|
|
|
* defines the name of a formatter for how buffer names are displayed. >
|
|
|
|
|
let g:airline#extensions#tabline#formatter = 'default'
|
|
|
|
|
|
|
|
|
|
" here is how you can define a 'foo' formatter:
|
2013-09-06 20:51:58 -04:00
|
|
|
|
function! airline#extensions#tabline#formatters#foo(bufnr, buffers)
|
2013-09-06 20:43:51 -04:00
|
|
|
|
return fnamemodify(bufname(a:bufnr), ':t')
|
|
|
|
|
endfunction
|
|
|
|
|
let g:airline#extensions#tabline#formatter = 'foo'
|
|
|
|
|
<
|
2013-09-06 21:52:53 -04:00
|
|
|
|
Note: the following variables are only used by the 'default' formatter.
|
2013-09-06 20:43:51 -04:00
|
|
|
|
|
2013-09-06 21:52:53 -04:00
|
|
|
|
* configure whether buffer numbers should be shown. >
|
|
|
|
|
let g:airline#extensions#tabline#buffer_nr_show = 0
|
2013-09-04 11:47:05 -04:00
|
|
|
|
<
|
2013-09-06 21:52:53 -04:00
|
|
|
|
* configure how buffer numbers should be formatted with |printf|. >
|
|
|
|
|
let g:airline#extensions#tabline#buffer_nr_format = '%s: '
|
|
|
|
|
<
|
|
|
|
|
* configure the formatting of filenames (see |filename-modifiers|). >
|
|
|
|
|
let g:airline#extensions#tabline#fnamemod = ':p:.'
|
2013-09-07 11:09:19 -04:00
|
|
|
|
<
|
|
|
|
|
* configure collapsing parent directories in buffer name. >
|
|
|
|
|
let g:airline#extensions#tabline#fnamecollapse = 1
|
2013-09-06 21:36:15 -04:00
|
|
|
|
<
|
2013-09-04 15:53:04 -04:00
|
|
|
|
* configure the minimum number of buffers needed to show the tabline. >
|
|
|
|
|
let g:airline#extensions#tabline#buffer_min_count = 0
|
|
|
|
|
<
|
2013-09-07 09:50:55 -04:00
|
|
|
|
Note: this setting only applies to a single tab.
|
|
|
|
|
|
2013-09-04 15:20:06 -04:00
|
|
|
|
* configure separators for the tabline only. >
|
|
|
|
|
let g:airline#extensions#tabline#left_sep = ''
|
|
|
|
|
let g:airline#extensions#tabline#left_alt_sep = ''
|
|
|
|
|
let g:airline#extensions#tabline#right_sep = ''
|
|
|
|
|
let g:airline#extensions#tabline#right_alt_sep = ''
|
|
|
|
|
<
|
2013-09-03 14:48:08 -04:00
|
|
|
|
Note: Enabling this extension will modify |showtabline| and |guioptions|.
|
2013-08-13 21:47:08 -04:00
|
|
|
|
|
2013-08-31 22:34:05 -04:00
|
|
|
|
==============================================================================
|
|
|
|
|
ADVANCED CUSTOMIZATION *airline-advanced-customization*
|
|
|
|
|
|
|
|
|
|
The defaults will accomodate the mass majority of users with minimal
|
|
|
|
|
configuration. However, if you want to reposition sections or contents you can
|
2013-09-01 14:36:20 -04:00
|
|
|
|
do so with built-in helper functions, which makes it possible to create
|
|
|
|
|
sections in a more declarative style.
|
|
|
|
|
|
|
|
|
|
------------------------------------- *airline-parts*
|
|
|
|
|
A part is something that contains metadata that eventually gets rendered into
|
|
|
|
|
the statusline. You can define parts that contain constant strings or
|
|
|
|
|
functions. Defining parts is needed if you want to use features like automatic
|
|
|
|
|
insertion of separators or hiding based on window width.
|
|
|
|
|
|
|
|
|
|
For example, this is how you would define a part function: >
|
2013-08-31 22:34:05 -04:00
|
|
|
|
call airline#parts#define_function('foo', 'GetFooText')
|
|
|
|
|
<
|
2013-09-01 14:36:20 -04:00
|
|
|
|
Here is how you would define a part that is visible only if the window width
|
|
|
|
|
greater than a minimum width. >
|
|
|
|
|
call airline#parts#define_minwidth('foo', 50)
|
|
|
|
|
<
|
2013-09-08 19:06:57 -04:00
|
|
|
|
Parts can be configured to be visible conditionally. >
|
|
|
|
|
call airline#parts#define_condition('foo', 'getcwd() =~ "work_dir"')
|
|
|
|
|
<
|
2013-09-01 14:36:20 -04:00
|
|
|
|
Note: Part definitions are combinative; e.g. the two examples above modify the
|
|
|
|
|
same `foo` part.
|
|
|
|
|
|
2013-08-31 22:34:05 -04:00
|
|
|
|
Note: Look at the source code and tests for the full API.
|
|
|
|
|
|
2013-09-01 14:36:20 -04:00
|
|
|
|
------------------------------------- *airline-sections*
|
2013-08-31 22:34:05 -04:00
|
|
|
|
Once a part is defined, you can use helper functions to generate the
|
|
|
|
|
statuslines for each section. For example, to use the part above, we could
|
|
|
|
|
define a section like this: >
|
2013-09-01 13:59:22 -04:00
|
|
|
|
function! AirlineInit()
|
|
|
|
|
let g:airline_section_a = airline#section#create(['mode', ' ', 'foo'])
|
|
|
|
|
let g:airline_section_b = airline#section#create_left(['ffenc','file'])
|
2013-09-07 09:50:55 -04:00
|
|
|
|
let g:airline_section_c = airline#section#create(['%{getcwd()}'])
|
2013-09-01 13:59:22 -04:00
|
|
|
|
endfunction
|
|
|
|
|
autocmd VimEnter * call AirlineInit()
|
2013-08-31 22:34:05 -04:00
|
|
|
|
<
|
|
|
|
|
This will create a section with the `mode`, followed by a space, and our `foo`
|
2013-09-01 13:59:22 -04:00
|
|
|
|
part in section `a`. Section `b` will have two parts with a left-side
|
2013-09-07 14:33:47 -04:00
|
|
|
|
separator. And section `c` will contain the current path. You may notice that
|
|
|
|
|
the space and cwd are not defined parts. For convenience, if a part of that
|
|
|
|
|
key does not exist, it will be inserted as is. The unit tests will be a good
|
|
|
|
|
resource for possibilities.
|
2013-08-31 22:34:05 -04:00
|
|
|
|
|
|
|
|
|
Note: The use of `VimEnter` is important, because most extensions are lazily
|
|
|
|
|
loaded, so we must give them a chance to define their parts before we can use
|
|
|
|
|
them.
|
|
|
|
|
|
2013-09-01 12:07:46 -04:00
|
|
|
|
Note: The `airline#section#create` function and friends will do its best to
|
|
|
|
|
create a section with the appropriate separators, but it only works for
|
2013-09-07 14:33:47 -04:00
|
|
|
|
function and text parts. Special |statusline| items like %f or raw/undefined
|
|
|
|
|
parts will not work as it is not possible to inspect their widths/contents
|
|
|
|
|
before rendering to the statusline.
|
2013-09-01 12:07:46 -04:00
|
|
|
|
|
2013-08-03 11:14:02 -04:00
|
|
|
|
==============================================================================
|
|
|
|
|
FUNCREFS *airline-funcrefs*
|
|
|
|
|
|
|
|
|
|
vim-airline internally uses funcrefs to integrate with third party plugins,
|
2013-08-31 22:34:05 -04:00
|
|
|
|
and you can tap into this functionality to extend it for you needs. This is
|
|
|
|
|
the most powerful way to customize the statusline, and sometimes it may be
|
|
|
|
|
easier to go this route than the above methods.
|
|
|
|
|
|
|
|
|
|
Every section can have two values. The default value is the global `g:`
|
|
|
|
|
variable which is used in the absense of a `w:` value. This makes it very easy
|
|
|
|
|
to override only certain parts of the statusline by only defining window-local
|
|
|
|
|
variables for a subset of all sections.
|
2013-08-03 11:14:02 -04:00
|
|
|
|
|
2013-08-31 19:33:31 -04:00
|
|
|
|
------------------------------------- *add_statusline_func*
|
2013-08-23 17:22:20 -04:00
|
|
|
|
The following is an example of how you can extend vim-airline to support a
|
|
|
|
|
new plugin. >
|
2013-08-21 11:14:12 -04:00
|
|
|
|
function! MyPlugin(...)
|
2013-07-10 09:48:13 -04:00
|
|
|
|
if &filetype == 'MyPluginFileType'
|
|
|
|
|
let w:airline_section_a = 'MyPlugin'
|
|
|
|
|
let w:airline_section_b = '%f'
|
|
|
|
|
let w:airline_section_c = '%{MyPlugin#function()}'
|
2013-08-03 11:14:02 -04:00
|
|
|
|
let g:airline_variable_referenced_in_statusline = 'foo'
|
2013-07-10 09:48:13 -04:00
|
|
|
|
endif
|
|
|
|
|
endfunction
|
2013-08-23 17:22:20 -04:00
|
|
|
|
call airline#add_statusline_func('MyPlugin')
|
|
|
|
|
<
|
2013-09-07 09:50:55 -04:00
|
|
|
|
Notice that only the left side of the statusline is overwritten. This means
|
|
|
|
|
the right side (the line/column numbers, etc) will be intact.
|
|
|
|
|
|
2013-08-31 19:33:31 -04:00
|
|
|
|
------------------------------------- *remove_statusline_func*
|
2013-08-23 23:02:13 -04:00
|
|
|
|
You can also remove a function as well, which is useful for when you want a
|
|
|
|
|
temporary override. >
|
2013-08-23 17:22:20 -04:00
|
|
|
|
call airline#remove_statusline_func('MyPlugin')
|
2013-07-10 09:48:13 -04:00
|
|
|
|
<
|
2013-08-23 17:22:20 -04:00
|
|
|
|
|
2013-08-22 19:20:53 -04:00
|
|
|
|
==============================================================================
|
|
|
|
|
PIPELINE *airline-pipeline*
|
2013-08-21 23:25:22 -04:00
|
|
|
|
|
2013-08-22 19:20:53 -04:00
|
|
|
|
Sometimes you want to do more than just use overrides. The statusline funcref
|
2013-08-27 22:36:12 -04:00
|
|
|
|
is invoked and passed two arguments. The first of these arguments is the
|
|
|
|
|
statusline builder. You can use this to build completely custom statuslines
|
|
|
|
|
to your liking. Here is an example: >
|
2013-07-25 18:48:15 -04:00
|
|
|
|
>
|
2013-08-21 23:25:22 -04:00
|
|
|
|
function! MyPlugin(...)
|
2013-08-22 19:20:53 -04:00
|
|
|
|
" first variable is the statusline builder
|
|
|
|
|
let builder = a:1
|
|
|
|
|
|
|
|
|
|
" WARNING: the API for the builder is not finalized and may change
|
|
|
|
|
call builder.add_section('Normal', '%f')
|
|
|
|
|
call builder.add_section('WarningMsg', '%{getcwd()}')
|
2013-08-27 22:36:12 -04:00
|
|
|
|
call builder.split()
|
|
|
|
|
call builder.add_section('airline_z', '%p%%')
|
2013-08-22 19:20:53 -04:00
|
|
|
|
|
2013-08-27 22:36:12 -04:00
|
|
|
|
" tell the core to use the contents of the builder
|
|
|
|
|
return 1
|
2013-07-25 18:48:15 -04:00
|
|
|
|
endfunction
|
|
|
|
|
<
|
2013-08-27 22:36:12 -04:00
|
|
|
|
The above example uses various some example highlight groups to demonstrate
|
2013-09-07 09:50:55 -04:00
|
|
|
|
that you can use any combination from the loaded colorscheme. However, if
|
2013-08-27 22:36:12 -04:00
|
|
|
|
you want colors to change between modes, you should use one of the section
|
|
|
|
|
highlight groups, e.g. `airline_a` and `airline_b`.
|
|
|
|
|
|
2013-08-23 23:18:43 -04:00
|
|
|
|
The second variable is the context, which is a dictionary containing various
|
|
|
|
|
values such as whether the statusline is active or not, and the window number.
|
2013-08-24 09:31:30 -04:00
|
|
|
|
>
|
|
|
|
|
context = {
|
|
|
|
|
'winnr': 'the window number for the statusline',
|
|
|
|
|
'active': 'whether the window is active or not',
|
2013-09-07 09:50:55 -04:00
|
|
|
|
'bufnr': 'the current buffer for this window',
|
2013-08-24 09:31:30 -04:00
|
|
|
|
}
|
|
|
|
|
<
|
2013-08-31 19:33:31 -04:00
|
|
|
|
------------------------------------- *airline-pipeline-return-codes*
|
2013-08-23 23:02:13 -04:00
|
|
|
|
The pipeline accepts various return codes and can be used to determine the
|
|
|
|
|
next action. The following are the supported codes: >
|
|
|
|
|
0 the default, continue on with the next funcref
|
|
|
|
|
-1 do not modify the statusline
|
|
|
|
|
1 modify the statusline with the current contents of the builder
|
|
|
|
|
<
|
|
|
|
|
Note: Any value other than 0 will halt the pipeline and prevent the next
|
|
|
|
|
funcref from executing.
|
2013-07-25 18:48:15 -04:00
|
|
|
|
|
2013-08-13 23:07:01 -04:00
|
|
|
|
==============================================================================
|
|
|
|
|
WRITING EXTENSIONS *airline-writing-extensions*
|
|
|
|
|
|
|
|
|
|
For contributions into the plugin, here are the following guidelines:
|
|
|
|
|
|
|
|
|
|
1. For simple |&filetype| checks, they can be added directly into the
|
|
|
|
|
`extensions.vim` file.
|
|
|
|
|
|
|
|
|
|
2. Pretty much everything else should live as a separate file under the
|
|
|
|
|
`extensions/` directory.
|
|
|
|
|
|
|
|
|
|
a. Inside `extensions.vim`, add a check for some variable or command that
|
|
|
|
|
is always available (these must be defined in `plugin`, and _not_
|
|
|
|
|
`autoload` of the other plugin). If it exists, then initialize the
|
|
|
|
|
extension. This ensures that the extension is loaded if and only if the
|
2013-08-20 19:27:55 -04:00
|
|
|
|
user has the other plugin installed. Also, a check to
|
|
|
|
|
`airline#extensions#foo_plugin#enabled` should be performed to allow the
|
|
|
|
|
user to disable it.
|
2013-08-13 23:07:01 -04:00
|
|
|
|
|
2013-08-20 19:27:55 -04:00
|
|
|
|
b. Configuration variables for the extension should reside in the
|
|
|
|
|
extension, e.g. `g:airline#extensions#foo_plugin#bar_variable`.
|
2013-08-13 23:07:01 -04:00
|
|
|
|
|
2013-09-07 09:50:55 -04:00
|
|
|
|
See the source of |example.vim| for documented code of how to write one.
|
|
|
|
|
Looking at the other extensions is also a good resource.
|
2013-08-16 14:04:03 -04:00
|
|
|
|
|
2013-07-23 23:00:23 -04:00
|
|
|
|
==============================================================================
|
|
|
|
|
WRITING THEMES *airline-themes*
|
|
|
|
|
|
|
|
|
|
Themes are written "close to the metal" -- you will need to know some basic
|
2013-08-03 21:25:35 -04:00
|
|
|
|
VimL syntax to write a theme, but if you've written in any programming
|
|
|
|
|
language before it will be easy to pick up.
|
|
|
|
|
|
|
|
|
|
The |dark.vim| theme fully documents this procedure and will guide you through
|
|
|
|
|
the process. The |jellybeans.vim| theme is another example of how to write a
|
|
|
|
|
theme, but instead of manually declaring colors, it extracts the values from
|
|
|
|
|
highlight groups.
|
2013-07-23 23:00:23 -04:00
|
|
|
|
|
2013-07-20 09:24:15 -04:00
|
|
|
|
==============================================================================
|
|
|
|
|
TROUBLESHOOTING *airline-troubleshooting*
|
|
|
|
|
|
2013-08-08 00:23:43 -04:00
|
|
|
|
Q. There are no colors.
|
|
|
|
|
A. You need to set up your terminal correctly. For more details, see
|
2013-08-10 19:22:42 -04:00
|
|
|
|
<http://vim.wikia.com/wiki/256_colors_in_vim>. Alternatively, if you want
|
|
|
|
|
to bypass the automatic detection of terminal colors, you can force Vim
|
2013-08-13 22:32:05 -04:00
|
|
|
|
into 256 color mode with this: >
|
2013-08-08 00:23:43 -04:00
|
|
|
|
set t_Co=256
|
|
|
|
|
<
|
|
|
|
|
Q. The statusline does not appear until I create a split.
|
|
|
|
|
A. This is the default setting of |laststatus|. If you want it to appear all
|
2013-08-13 22:32:05 -04:00
|
|
|
|
the time, add the following to your vimrc: >
|
2013-08-08 00:23:43 -04:00
|
|
|
|
set laststatus=2
|
|
|
|
|
<
|
|
|
|
|
Q. Powerline symbols are not showing up.
|
|
|
|
|
A. First, you must install patched powerline fonts. Second, you must enable
|
2013-08-13 22:32:05 -04:00
|
|
|
|
unicode in vim. >
|
2013-08-08 00:23:43 -04:00
|
|
|
|
set encoding=utf-8
|
|
|
|
|
<
|
|
|
|
|
Q. There is a pause when leaving insert mode.
|
2013-08-13 22:32:05 -04:00
|
|
|
|
A. Add the following to your vimrc. >
|
2013-08-08 00:23:43 -04:00
|
|
|
|
set ttimeoutlen=50
|
|
|
|
|
<
|
2013-08-10 19:22:42 -04:00
|
|
|
|
Q. The colors look a little off for some themes.
|
|
|
|
|
A. Certain themes are derived from the active colorscheme by extracting colors
|
|
|
|
|
from predefined highlight groups. These airline themes will look good for
|
|
|
|
|
their intended matching colorschemes, but will be hit or miss when loaded
|
|
|
|
|
with other colorschemes.
|
|
|
|
|
|
|
|
|
|
|
2013-08-08 00:23:43 -04:00
|
|
|
|
Solutions to other common problems can be found in the Wiki:
|
2013-07-20 09:24:15 -04:00
|
|
|
|
<https://github.com/bling/vim-airline/wiki/FAQ>
|
|
|
|
|
|
2013-07-01 07:33:26 -04:00
|
|
|
|
==============================================================================
|
|
|
|
|
CONTRIBUTIONS *airline-contributions*
|
|
|
|
|
|
2013-07-15 10:45:47 -04:00
|
|
|
|
Contributions and pull requests are welcome.
|
2013-07-01 07:33:26 -04:00
|
|
|
|
|
|
|
|
|
==============================================================================
|
|
|
|
|
LICENSE *airline-license*
|
|
|
|
|
|
2013-08-13 22:32:05 -04:00
|
|
|
|
MIT License. Copyright © 2013 Bailey Ling.
|
2013-07-15 10:45:47 -04:00
|
|
|
|
|
2013-07-01 07:33:26 -04:00
|
|
|
|
|
|
|
|
|
vim:tw=78:ts=8:ft=help:norl:
|