Top Related Projects
A light and configurable statusline/tabline plugin for Vim
A collection of themes for vim-airline
Powerline is a statusline plugin for vim, and provides statuslines and prompts for several other applications, including zsh, bash, tmux, IPython, Awesome and Qtile.
A blazing fast and easy to configure neovim statusline plugin written in pure lua.
Quick Overview
Vim-airline is a lean & mean status/tabline for Vim that's light as air. It enhances the visual appearance of Vim by providing a customizable and informative status line and tab line, displaying useful information about the current file, Git status, and more.
Pros
- Lightweight and fast, with minimal impact on Vim's performance
- Highly customizable with numerous themes and extensions available
- Integrates well with other popular Vim plugins
- Provides useful information at a glance, improving productivity
Cons
- Requires some configuration to get the most out of its features
- May have compatibility issues with certain terminal emulators or color schemes
- Learning curve for customizing and extending the plugin
Code Examples
- Basic configuration in .vimrc:
let g:airline_theme='solarized'
let g:airline_powerline_fonts = 1
let g:airline#extensions#tabline#enabled = 1
This sets the airline theme to 'solarized', enables powerline fonts, and activates the tabline extension.
- Customizing sections:
let g:airline_section_b = '%{strftime("%c")}'
let g:airline_section_y = 'BN: %{bufnr("%")}'
This adds the current date and time to section b, and the buffer number to section y.
- Adding custom statusline functions:
function! AirlineInit()
let g:airline_section_a = airline#section#create(['mode', ' ', 'branch'])
let g:airline_section_b = airline#section#create_left(['ffenc', 'hunks', '%f'])
let g:airline_section_c = airline#section#create(['filetype'])
let g:airline_section_x = airline#section#create(['%P'])
let g:airline_section_y = airline#section#create(['%B'])
let g:airline_section_z = airline#section#create_right(['%l', '%c'])
endfunction
autocmd VimEnter * call AirlineInit()
This function customizes the layout of the statusline sections.
Getting Started
- Install vim-airline using your preferred Vim plugin manager. For example, with vim-plug:
call plug#begin()
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
call plug#end()
- Add basic configuration to your .vimrc:
let g:airline_theme='solarized'
let g:airline_powerline_fonts = 1
let g:airline#extensions#tabline#enabled = 1
-
Restart Vim or source your .vimrc file.
-
Explore additional customization options in the plugin's documentation.
Competitor Comparisons
A light and configurable statusline/tabline plugin for Vim
Pros of lightline.vim
- Lightweight and faster performance
- Highly customizable without relying on predefined themes
- Simpler configuration with less overhead
Cons of lightline.vim
- Fewer built-in features and integrations compared to vim-airline
- Requires more manual configuration for advanced setups
- Less extensive documentation and community support
Code Comparison
vim-airline:
let g:airline_theme='solarized'
let g:airline#extensions#tabline#enabled = 1
let g:airline_powerline_fonts = 1
lightline.vim:
let g:lightline = {
\ 'colorscheme': 'wombat',
\ 'active': {
\ 'left': [ [ 'mode', 'paste' ], [ 'readonly', 'filename', 'modified' ] ]
\ }
\ }
Summary
vim-airline and lightline.vim are both popular statusline plugins for Vim. vim-airline offers more out-of-the-box features and integrations, making it easier to set up a feature-rich statusline quickly. However, it can be slower and more resource-intensive.
lightline.vim, on the other hand, prioritizes performance and simplicity. It's more lightweight and customizable but requires more manual configuration for advanced setups. The choice between the two depends on your preferences for performance, ease of setup, and desired features.
A collection of themes for vim-airline
Pros of vim-airline-themes
- Dedicated repository for themes, allowing for easier management and updates
- Provides a wider variety of pre-made themes for users to choose from
- Allows users to focus solely on theming without core functionality changes
Cons of vim-airline-themes
- Requires the main vim-airline plugin to function
- May have slower update cycles compared to the core plugin
- Potential for compatibility issues if not kept in sync with vim-airline
Code Comparison
vim-airline:
let g:airline_theme='dark'
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#left_sep = ' '
let g:airline#extensions#tabline#left_alt_sep = '|'
let g:airline#extensions#tabline#formatter = 'default'
vim-airline-themes:
let g:airline_theme='solarized'
let g:airline_solarized_bg='dark'
let g:airline_solarized_dark_inactive_border = 1
let g:airline_solarized_normal_green = 1
let g:airline_solarized_dark_text = 0
The main difference in the code is that vim-airline-themes focuses on theme-specific configurations, while vim-airline handles core functionality and basic theming. vim-airline-themes provides more granular control over theme-specific settings, allowing users to fine-tune the appearance of their statusline.
Powerline is a statusline plugin for vim, and provides statuslines and prompts for several other applications, including zsh, bash, tmux, IPython, Awesome and Qtile.
Pros of Powerline
- Broader application support beyond Vim (e.g., shells, tmux)
- More customizable with a wider range of configuration options
- Written in Python, potentially easier for some users to extend or modify
Cons of Powerline
- Requires Python installation and setup
- Can be more complex to configure and maintain
- May have higher resource usage due to Python dependency
Code Comparison
Powerline configuration (Python):
from powerline import Powerline
powerline = Powerline()
powerline.theme = "default"
powerline.colorscheme = "default"
print(powerline.render())
Vim-airline configuration (Vimscript):
let g:airline_theme='dark'
let g:airline_powerline_fonts = 1
let g:airline#extensions#tabline#enabled = 1
Summary
Powerline offers broader application support and more customization options but requires Python and can be more complex to set up. Vim-airline is Vim-specific, lighter weight, and easier to configure but may have fewer features. The choice between them depends on your specific needs and preferences for statusline customization across different applications.
A blazing fast and easy to configure neovim statusline plugin written in pure lua.
Pros of lualine.nvim
- Written in Lua, offering better performance and easier configuration
- More customizable with a wider range of built-in themes and components
- Actively maintained with frequent updates and new features
Cons of lualine.nvim
- Requires Neovim 0.5+ and Lua knowledge for advanced customization
- Smaller community and fewer third-party extensions compared to vim-airline
Code Comparison
vim-airline configuration:
let g:airline_theme='solarized'
let g:airline#extensions#tabline#enabled = 1
let g:airline_powerline_fonts = 1
lualine.nvim configuration:
require('lualine').setup {
options = { theme = 'solarized' },
sections = { lualine_a = {'mode'}, lualine_b = {'branch'} }
}
Both plugins aim to enhance the status line in Vim/Neovim, but lualine.nvim leverages Lua for improved performance and flexibility. vim-airline has a larger user base and more extensions, while lualine.nvim offers easier customization and a more modern approach. The choice between them often depends on the user's preference for Vim script vs. Lua and their specific requirements for status line functionality.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
vim-airline
Lean & mean status/tabline for vim that's light as air.
When the plugin is correctly loaded, there will be a nice statusline at the bottom of each vim window.
That line consists of several sections, each one displaying some piece of information. By default (without configuration) this line will look like this:
+-----------------------------------------------------------------------------+
|~ |
|~ |
|~ VIM - Vi IMproved |
|~ |
|~ version 8.2 |
|~ by Bram Moolenaar et al. |
|~ Vim is open source and freely distributable |
|~ |
|~ type :h :q<Enter> to exit |
|~ type :help<Enter> or <F1> for on-line help |
|~ type :help version8<Enter> for version info |
|~ |
|~ |
+-----------------------------------------------------------------------------+
| A | B | C X | Y | Z | [...] |
+-----------------------------------------------------------------------------+
The statusline is the colored line at the bottom, which contains the sections (possibly in different colors):
section | meaning (example) |
---|---|
A | displays the mode + additional flags like crypt/spell/paste (INSERT) |
B | Environment status (VCS information - branch, hunk summary (master), battery level) |
C | filename + read-only flag (~/.vim/vimrc RO) |
X | filetype (vim) |
Y | file encoding[fileformat] (utf-8[unix]) |
Z | current position in the file |
[...] | additional sections (warning/errors/statistics) from external plugins (e.g. YCM, syntastic, ...) |
The information in Section Z looks like this:
10% â° 10/100 ln : 20
This means:
10% - 10 percent down the top of the file
â° 10 - current line 10
/100 ln - of 100 lines
: 20 - current column 20
For a better look, those sections can be colored differently, depending on various conditions (e.g. the mode or whether the current file is 'modified')
Features
- Tiny core written with extensibility in mind (open/closed principle).
- Integrates with a variety of plugins, including: vim-bufferline, fugitive, flog, unite, ctrlp, minibufexpl, gundo, undotree, nerdtree, tagbar, vim-gitgutter, vim-signify, quickfixsigns, syntastic, eclim, lawrencium, virtualenv, tmuxline, taboo.vim, ctrlspace, vim-bufmru, vimagit, denite, vim.battery and more.
- Looks good with regular fonts and provides configuration points so you can use unicode or powerline symbols.
- Optimized for speed - loads in under a millisecond.
- Extensive suite of themes for popular color schemes including solarized (dark and light), tomorrow (all variants), base16 (all variants), molokai, jellybeans and others. Note these are now external to this plugin. More details can be found in the themes repository.
- Supports 7.2 as the minimum Vim version.
- The master branch tries to be as stable as possible, and new features are merged in only after they have gone through a full regression test.
- Unit testing suite.
Installation
This plugin follows the standard runtime path structure, and as such it can be installed with a variety of plugin managers:
Plugin Manager | Install with... |
---|---|
Pathogen | git clone https://github.com/vim-airline/vim-airline ~/.vim/bundle/vim-airline Remember to run :Helptags to generate help tags |
NeoBundle | NeoBundle 'vim-airline/vim-airline' |
Vundle | Plugin 'vim-airline/vim-airline' |
Plug | Plug 'vim-airline/vim-airline' |
VAM | call vam#ActivateAddons([ 'vim-airline' ]) |
Dein | call dein#add('vim-airline/vim-airline') |
minpac | call minpac#add('vim-airline/vim-airline') |
pack feature (native Vim 8 package feature) | git clone https://github.com/vim-airline/vim-airline ~/.vim/pack/dist/start/vim-airline Remember to run :helptags ~/.vim/pack/dist/start/vim-airline/doc to generate help tags |
manual | copy all of the files into your ~/.vim directory |
Straightforward customization
If you don't like the defaults, you can replace all sections with standard statusline
syntax. Give your statusline that you've built over the years a face lift.
Themes
Themes have moved to another repository as of this commit.
Install the themes as you would this plugin (Vundle example):
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
See vim-airline-themes for more.
Automatic truncation
Sections and parts within sections can be configured to automatically hide when the window size shrinks.
Smarter tab line
Automatically displays all buffers when there's only one tab open.
This is disabled by default; add the following to your vimrc to enable the extension:
let g:airline#extensions#tabline#enabled = 1
Separators can be configured independently for the tabline, so here is how you can define "straight" tabs:
let g:airline#extensions#tabline#left_sep = ' '
let g:airline#extensions#tabline#left_alt_sep = '|'
In addition, you can also choose which path formatter airline uses. This affects how file paths are
displayed in each individual tab as well as the current buffer indicator in the upper right.
To do so, set the formatter
field with:
let g:airline#extensions#tabline#formatter = 'default'
Here is a complete list of formatters with screenshots:
default
jsformatter
unique_tail
unique_tail_improved
Seamless integration
vim-airline integrates with a variety of plugins out of the box. These extensions will be lazily loaded if and only if you have the other plugins installed (and of course you can turn them off).
ctrlp.vim
unite.vim
denite.nvim
tagbar
csv.vim
syntastic
hunks (vim-gitgutter, vim-signify, coc-git & gitsigns.nvim)
vimagit
flog
virtualenv
tmuxline
promptline
ctrlspace
xkb-switch/xkb-layout
vimtex
localsearch
LanguageClient
Vim-CMake
vim.battery
Extras
vim-airline also supplies some supplementary stand-alone extensions. In addition to the tabline extension mentioned earlier, there is also:
whitespace
statusline on top
The statusline can alternatively be drawn on top, making room for other plugins to use the statusline:
The example shows a custom statusline setting, that imitates Vims default statusline, while allowing
to call custom functions. Use :let g:airline_statusline_ontop=1
to enable it.
Configurable and extensible
Fine-tuned configuration
Every section is composed of parts, and you can reorder and reconfigure them at will.
Sections can contain accents, which allows for very granular control of visuals (see configuration here).
Extensible pipeline
Completely transform the statusline to your liking. Build out the statusline as you see fit by extracting colors from the current colorscheme's highlight groups.
Rationale
There's already powerline, why yet another statusline?
- 100% vimscript; no python needed.
What about vim-powerline?
- vim-powerline has been deprecated in favor of the newer, unifying powerline, which is under active development; the new version is written in python at the core and exposes various bindings such that it can style statuslines not only in vim, but also tmux, bash, zsh, and others.
Where did the name come from?
I wrote the initial version on an airplane, and since it's light as air it turned out to be a good name. Thanks for flying vim!
Documentation
:help airline
Integrating with powerline fonts
For the nice looking powerline symbols to appear, you will need to install a patched font. Instructions can be found in the official powerline documentation. Prepatched fonts can be found in the powerline-fonts repository.
Finally, you can add the convenience variable let g:airline_powerline_fonts = 1
to your vimrc which will automatically populate the g:airline_symbols
dictionary with the powerline symbols.
FAQ
Solutions to common problems can be found in the Wiki.
Performance
Whoa! Everything got slow all of a sudden...
vim-airline strives to make it easy to use out of the box, which means that by default it will look for all compatible plugins that you have installed and enable the relevant extension.
Many optimizations have been made such that the majority of users will not see any performance degradation, but it can still happen. For example, users who routinely open very large files may want to disable the tagbar
extension, as it can be very expensive to scan for the name of the current function.
The minivimrc project has some helper mappings to troubleshoot performance related issues.
If you don't want all the bells and whistles enabled by default, you can define a value for g:airline_extensions
. When this variable is defined, only the extensions listed will be loaded; an empty array would effectively disable all extensions (e.g. :let g:airline_extensions = []
).
Also, you can enable caching of the various syntax highlighting groups. This will try to prevent some of the more expensive :hi
calls in Vim, which seem to be expensive in the Vim core at the expense of possibly not being one hundred percent correct all the time (especially if you often change highlighting groups yourself using :hi
commands). To set this up do :let g:airline_highlighting_cache = 1
. A :AirlineRefresh
will however clear the cache.
In addition you might want to check out the dark_minimal theme, which does not change highlighting groups once they are defined. Also please check the FAQ for more information on how to diagnose and fix the problem.
Screenshots
A full list of screenshots for various themes can be found in the Wiki.
Maintainers
The project is currently being maintained by Christian Brabandt and Bailey Ling.
If you are interested in becoming a maintainer (we always welcome more maintainers), please go here.
License
MIT License. Copyright (c) 2013-2021 Bailey Ling & Contributors.
Top Related Projects
A light and configurable statusline/tabline plugin for Vim
A collection of themes for vim-airline
Powerline is a statusline plugin for vim, and provides statuslines and prompts for several other applications, including zsh, bash, tmux, IPython, Awesome and Qtile.
A blazing fast and easy to configure neovim statusline plugin written in pure lua.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot