๐Ÿš€ bars.nvim

January 27, 2026 ยท View on GitHub

Tip

This repository contains guides for both creating your own bars & lines plugin.

Other than that, this repository acts as a working example bars & lines plugin.

A highly customisable & toggle-able bars & lines plugin for Neovim.

๐Ÿ“– Table of contents

โœจ Features

  • Ability to toggle various bars & lines either globally or on specific window.
  • Component-style configuration to keep things clean & readable.
  • Per window configuration, allowing users to change how things look on each window.
  • Conditional rendering to disable certain components based on conditions.
  • Enable or disable various bars via :Bars.

More specific features are as follows,

๐Ÿงฉ Statusline

  • Built-in support for showing current Git branch & diagnostics count
  • Customisable ruler.
  • Custom statusline for,
    • Help files
    • Quickfix

๐Ÿงฉ Statuscolumn

  • Filtering of Signs.
  • Built-in support for mixed line numbers(relative for normal lines & absolute for current line).
  • Fancy virtual lines & wrapped lines indicators.

๐Ÿงฉ Winbar

  • Built-in support for Tree-sitter node hierarchy for the current node.
  • File path segments from.project root.

๐Ÿงฉ Tabline

  • Buffer list(tab list similar to IDEs) support.
  • Mouse-support.

๐Ÿ“ Installation

๐Ÿงฉ Vim-plug

Add this to your plugin list.

Plug "OXY2DEV/bars.nvim"

๐Ÿ’ค lazy.nvim

Note

Lazy loading is NOT needed for this!

For plugins.lua users,

{
    "OXY2DEV/bars.nvim",
},

For plugins/bars.lua,

return {
    "OXY2DEV/bars.nvim",
};

๐Ÿฆ  mini.deps

local MiniDeps = require("mini.deps");

MiniDeps.add({
    source = "OXY2DEV/bars.nvim"
});

๐ŸŒ’ Rocks.nvim

Warning

luarocks package may sometimes be a bit behind main.

:Rocks install bars.nvim

๐Ÿ“ฅ GitHub release

Tagged releases can be found in the release page.

Note

Github releases may sometimes be slightly behind main.

๐Ÿงญ Configuration

bars.nvim can be configured in 2 ways,

  1. Via the setup() function.
require("bars").setup({
    global = false
});
  1. Via each module's setup function.
require("bars.statusline").setup({
    ignore_filetypes = { "help" }
});

Check the wiki to learn about all the configuration options!

๐Ÿงญ Configuration

Configuration guides are available in the wiki.

๐Ÿงฐ Commands

bars.nvim provides a single command :Bars which has sub-commands that can be used to do different things.

The sub-commands are given below,

Sub-commandDescription
DisableUsed to disable statusline, statuscolumn etc. globally.
EnableUsed to enable statusline, statuscolumn etc. globally.
StartSignals the module(s) to attach to new windows.
StopStops the module(s) from attaching to nee windows.
ToggleUsed to toggle statusline, statuscolumn etc. globally.
cleanCleans up cached values of deleted windows.
disableUsed to disable statusline, statuscolumn etc. of given window(s).
enableUsed to enable statusline, statuscolumn etc. of given window(s).
toggleUsed to toggle statusline, statuscolumn etc. of given window(s).
updateUpdates the module's configuration ID of given window.

All the sub-commands support modifier to specify which modules should be affected by the command.

Tip

If you want to run a sub-command on the current window then you can ignore the modifier.

" Toggles all bars & lines for the current window.
:Bars toggle

Modifiers are given below,

ModifierDescription
?Prompt which module(s) to affect.
allAffects all modules.
statuscolumnSelf-explanatory.
statuslineSelf-explanatory.
tablineSelf-explanatory.
winbarSelf-explanatory.

You can add any number of windows after the modifier to specify which windows to run the command on.

Tip

Cmdline completion are provided for all sub-commands/modifiers/windows!

๐Ÿ“š Guides

Note

These are work in progress!