github github
star 175
alert-circle 4
users 3
git-branch 4



24 days ago

Note: This fork is more updated and more actively developed, consider using this instead:

🌈 nvim-ts-rainbow 🌈

Rainbow parentheses for neovim using tree-sitter. This is a module for nvim-treesitter, not a standalone plugin. It requires and is configured via nvim-treesitter.

Here's a quick comparison for some Lua code:

Before After
before after

Should work with any language supported by nvim-treesitter. If any language is missing, please open an issue/PR.

Only neovim nightly is targeted.


The queries might be out of date at any time, keeping up with them for languages I don't use is not feasible. If you get errors like invalid node at position xxx, try removing this plugin first before opening an issue in nvim-treesitter. If it fixes the problem, open an issue/PR here.

Installation and setup

Install and set up nvim-treesitter according to their documentation. Install this plugin, then add a rainbow section in the call to require("nvim-treesitter.configs").setup():

  highlight = {
    -- ...
  -- ...
  rainbow = {
    enable = true,
    -- disable = { "jsx", "cpp" }, list of languages you want to disable the plugin for
    extended_mode = true, -- Also highlight non-bracket delimiters like html tags, boolean or table: lang -> boolean
    max_file_lines = nil, -- Do not enable for files with more than n lines, int
    -- colors = {}, -- table of hex strings
    -- termcolors = {} -- table of colour name strings

If you want to enable it only for some filetypes and disable it for everything else, see


To change the colours you can set them in the setup:

  rainbow = {
    -- Setting colors
    colors = {
      -- Colors here
    -- Term colors
    termcolors = {
      -- Term colors here

If you want to override some colours (you can only change colours 1 through 7 this way), you can do it in your init.vim: (thanks @delphinus !). You can also use this while writing a colorscheme

hi rainbowcol1 guifg=#123456


  • Java

alt text

The screenshots below use a different colorscheme

  • Fennel:

alt text alt text

  • C++:

alt text

  • Latex (with tag begin-end matching)

alt text


Huge thanks to @vigoux, @theHamsta, @sogaiu, @bfredl and @sunjon and @steelsojka for all their help.