• Stars
    star
    3,618
  • Rank 11,700 (Top 0.3 %)
  • Language
    Lua
  • License
    MIT License
  • Created about 4 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Indent guides for Neovim

Indent Blankline

This plugin adds indentation guides to all lines (including empty lines).

It uses Neovim's virtual text feature and no conceal

This plugin requires Neovim 0.5 or higher. It makes use of Neovim only features so it will not work in Vim. There is a legacy version of the plugin that supports Neovim 0.4 under the branch version-1

Install

Use your favourite plugin manager to install.

For lazy.nvim:

{ "lukas-reineke/indent-blankline.nvim" },

For packer.nvim:

use "lukas-reineke/indent-blankline.nvim"

For vim-plug:

Plug 'lukas-reineke/indent-blankline.nvim'

Setup

To configure indent-blankline, either run the setup function, or set variables manually. The setup function has a single table as argument, keys of the table match the :help indent-blankline-variables without the indent_blankline_ part.

require("indent_blankline").setup {
    -- for example, context is off by default, use this to turn it on
    show_current_context = true,
    show_current_context_start = true,
}

Please see :help indent_blankline.txt for more details and all possible values.

A lot of Yggdroot/indentLine options should work out of the box.

Screenshots

All screenshots use my custom onedark color scheme.

Simple

vim.opt.list = true
vim.opt.listchars:append "eol:↴"

require("indent_blankline").setup {
    show_end_of_line = true,
}

Screenshot

With custom listchars and g:indent_blankline_space_char_blankline

vim.opt.list = true
vim.opt.listchars:append "space:â‹…"
vim.opt.listchars:append "eol:↴"

require("indent_blankline").setup {
    show_end_of_line = true,
    space_char_blankline = " ",
}

Screenshot

With custom g:indent_blankline_char_highlight_list

vim.opt.termguicolors = true
vim.cmd [[highlight IndentBlanklineIndent1 guifg=#E06C75 gui=nocombine]]
vim.cmd [[highlight IndentBlanklineIndent2 guifg=#E5C07B gui=nocombine]]
vim.cmd [[highlight IndentBlanklineIndent3 guifg=#98C379 gui=nocombine]]
vim.cmd [[highlight IndentBlanklineIndent4 guifg=#56B6C2 gui=nocombine]]
vim.cmd [[highlight IndentBlanklineIndent5 guifg=#61AFEF gui=nocombine]]
vim.cmd [[highlight IndentBlanklineIndent6 guifg=#C678DD gui=nocombine]]

vim.opt.list = true
vim.opt.listchars:append "space:â‹…"
vim.opt.listchars:append "eol:↴"

require("indent_blankline").setup {
    space_char_blankline = " ",
    char_highlight_list = {
        "IndentBlanklineIndent1",
        "IndentBlanklineIndent2",
        "IndentBlanklineIndent3",
        "IndentBlanklineIndent4",
        "IndentBlanklineIndent5",
        "IndentBlanklineIndent6",
    },
}

Screenshot

With custom background highlight

vim.opt.termguicolors = true
vim.cmd [[highlight IndentBlanklineIndent1 guibg=#1f1f1f gui=nocombine]]
vim.cmd [[highlight IndentBlanklineIndent2 guibg=#1a1a1a gui=nocombine]]

require("indent_blankline").setup {
    char = "",
    char_highlight_list = {
        "IndentBlanklineIndent1",
        "IndentBlanklineIndent2",
    },
    space_char_highlight_list = {
        "IndentBlanklineIndent1",
        "IndentBlanklineIndent2",
    },
    show_trailing_blankline_indent = false,
}

Screenshot

With context indent highlighted by treesitter

vim.opt.list = true
vim.opt.listchars:append "space:â‹…"
vim.opt.listchars:append "eol:↴"

require("indent_blankline").setup {
    space_char_blankline = " ",
    show_current_context = true,
    show_current_context_start = true,
}

Screenshot

show_current_context_start uses underline, so to achieve the best result you might need to tweak the underline position. In Kitty terminal for example you can do that with modify_font

Thanks

Special thanks to Yggdroot/indentLine