Skip to content

Latest commit

 

History

History
190 lines (125 loc) · 5.03 KB

vim_airline.rst

File metadata and controls

190 lines (125 loc) · 5.03 KB

localcfg/plugins/vim_airline.vim

powerlineish theme screenshot

Attempt to cache highlighting group changes:

const g:airline_highlighting_cache = v:true

Configure look:

let g:airline_theme = 'powerlineish'
const g:airline_skip_empty_sections = v:true
const g:airline_inactive_collapse = v:false

Configure prettier symbols:

if index(split(&guifont), 'NF') != -1
    const g:airline_powerline_fonts = v:true
    const g:airline_left_sep = ''
    const g:airline_right_sep = ''
else
    const g:airline_left_sep = '╗'
    const g:airline_right_sep = '╔'
endif

if !exists('g:airline_symbols')
    let g:airline_symbols = {}
endif

let g:airline_symbols = #{
\   branch: '',
\   colnr: '℅',
\   crypt: '',
\   linenr: '',
\   maxlinenr: '⌇',
\   modified: '+',
\   notexists: 'Ɇ',
\   paste: 'ρ',
\   readonly: '',
\   space: ' ',
\   spell: '',
\   whitespace: 'Ξ',
\ }

Warning

'guifont' is normally only available with :command:`gvim`, but we have a :ref:`hacky workaround <term-guifont>` for regular |vim|.

Note

The NF-suffixed branch is here to prefer a :repo:`nerd-fonts <ryanoasis/nerd-fonts>` variation of a font if available.

Only show unusual encodings:

const g:airline#parts#ffenc#skip_expected_string = 'utf-8[unix]'

Only use the extensions I actually want:

const g:airline#extensions#disable_rtp_load = v:true
let g:airline_extensions = [
\   'csv',
\   'nrrwrgn',
\   'obsession',
\   'searchcount',
\   'tabline',
\   'unicode',
\   'vimagit',
\   'whitespace',
\   'wordcount',
\   'zoomwintab'
\ ]

Attention!

This requires some vigilance over updates for finding fancy new toys, but surely you’re not just blinding grabbing repositories from GitHub anyway…

Show emoji flags instead of textual code for spelling language:

let g:airline_detect_spelllang = 'flag'

Warning

Support for variable width Unicode characters as used in the flag display is hugely dependent on both terminal support and the system’s font configuration. This will cause problems, but I’m of the the opinion that they’re worth fixing for their usability improvements.

The searchcount extension only displays its segment when 'hlsearch' is enabled, so we’ll fall back on 'shortmess'’s search counting functionality when it is disabled:

augroup jnrowe_vim_airline
    autocmd!
    autocmd OptionSet hlsearch call plugins#vim_airline#toggle_searchcount()
augroup END

Enable :repo:`ale <dense-analysis/ale>` extension:

if has('signs')
    let g:airline_extensions += ['ale']
    const g:airline#extensions#ale#error_symbol = ''
    const g:airline#extensions#ale#warning_symbol = ''
    const g:airline#extensions#ale#checking_symbol = '…'
endif

Use simple statusline for quickfix windows:

if has('quickfix')
    let g:airline_extensions += ['quickfix']
endif

Enable |git| extension, if possible:

if executable('git')
    let g:airline_extensions += ['branch', 'hunks']

… truncate all but the :command:`basename`-equivalent of branch names:

const g:airline#extensions#branch#format = 2

… use nice symbols:

const g:airline#extensions#hunks#hunk_symbols = ['➕ ', ' ', '➖ ']

… don’t display symbol and count when there are no changes:

const g:airline#extensions#hunks#non_zero_only = v:true
endif

Only show tabline when there are multiple buffers:

const g:airline#extensions#tabline#buffer_min_count = 2

Show buffer number for quicker switching:

const g:airline#extensions#tabline#buffer_nr_show = v:true

Prettier overflow:

const g:airline#extensions#tabline#overflow_marker = '…'

Make the rounded separators display correctly in the tabline:

const g:airline#extensions#tabline#alt_sep = v:true
const g:airline#extensions#tabline#left_alt_sep = ''

Use unique names for buffers in tabline:

const g:airline#extensions#tabline#formatter = 'unique_tail_improved'

Show simple reading time estimate:

const g:airline#extensions#wordcount#formatter = 'readingtime'

When |CSV| files have a header, use it:

const g:airline#extensions#csv#column_display = 'Name'

Note

The csv extension uses the excellent :repo:`csv.vim <chrisbra/csv.vim>` plugin by Christian Brabandt.

Use a pretty symbol for :repo:`vim-obsession <tpope/vim-obsession>`:

const g:airline#extensions#obsession#indicator_text = ''

Allow spaces after tabs, but not in between:

const g:airline#extensions#whitespace#mixed_indent_algo = 2
.. spelling::

    Brabandt