Awesome Open Source
Awesome Open Source

🌊 KANAGAWA.nvim 🌊

NeoVim dark colorscheme inspired by the colors of the famous painting by Katsushika Hokusai.

Screenshot

Installation

Download with your favorite package manager.

use "rebelot/kanagawa.nvim"

Requirements

  • neovim >= 0.6
  • truecolor terminal support
  • undercurl terminal support (optional)

Usage

As simple as writing (pasting)

colorscheme kanagawa
vim.cmd("colorscheme kanagawa")

Plugin Support

And many others should "just work"!

Configuration

There is no need to call setup if you are ok with the defaults.

-- Default options:
require('kanagawa').setup({
    undercurl = true,           -- enable undercurls
    commentStyle = { italic = true },
    functionStyle = {},
    keywordStyle = { italic = true},
    statementStyle = { bold = true },
    typeStyle = {},
    variablebuiltinStyle = { italic = true},
    specialReturn = true,       -- special highlight for the return keyword
    specialException = true,    -- special highlight for exception handling keywords
    transparent = false,        -- do not set background color
    dimInactive = false,        -- dim inactive window `:h hl-NormalNC`
    globalStatus = false,       -- adjust window separators highlight for laststatus=3
    terminalColors = true,      -- define vim.g.terminal_color_{0,17}
    colors = {},
    overrides = {},
    theme = "default"           -- Load "default" theme or the experimental "light" theme
})

-- setup must be called before loading
vim.cmd("colorscheme kanagawa")

Light and default themes may also be changed by setting the background option. Note that if the option is set, its value will override and change the theme field the configuration.

:set background=dark " default theme
:set background=light " light theme

Customize highlight groups and colors

You can change the colors of existing hl-groups as well as creating new ones. Supported keywords are the same for :h nvim_set_hl {val} parameter.

You can define your own colors or use the theme colors (see example below). All the palette colors can be found here.

Example:

local default_colors = require("kanagawa.colors").setup()

-- this will affect all the hl-groups where the redefined colors are used
local my_colors = {
    -- use the palette color name...
    sumiInk1 = "black",
    fujiWhite = "#FFFFFF",
    -- ...or the theme name
    bg = "#272727",
    -- you can also define new colors if you want
    -- this will be accessible from require("kanagawa.colors").setup()
    -- AFTER calling require("kanagawa").setup(config)
    new_color = "teal"
}

local overrides = {
    -- create a new hl-group using default palette colors and/or new ones
    MyHlGroup1 = { fg = default_colors.waveRed, bg = "#AAAAAA", underline = true, bold = true, guisp="blue" },

    -- override existing hl-groups, the new keywords are merged with existing ones
    VertSplit  = { fg = default_colors.bg_dark, bg = "NONE" },
    TSError    = { link = "Error" },
    TSKeywordOperator = { bold = true},
    StatusLine = { fg = my_colors.new_color }
}

require'kanagawa'.setup({ overrides = overrides, colors = my_colors })
vim.cmd("colorscheme kanagawa")

Example for Global Statusline. Note: it works really nice with dimInactive = true option.

vim.opt.laststatus = 3
vim.opt.fillchars:append({
    horiz = '━',
    horizup = '┻',
    horizdown = '┳',
    vert = '┃',
    vertleft = '┨',
    vertright = '┣',
    verthoriz = '╋',
})
require'kanagawa'.setup({ globalStatus = true, ... })
vim.cmd("colorscheme kanagawa")

Color palette

Name Hex Usage
fujiWhite #DCD7BA Default foreground
oldWhite #C8C093 Dark foreground (statuslines)
sumiInk0 #16161D Dark background (statuslines and floating windows)
sumiInk1 #1F1F28 Default background
sumiInk2 #2A2A37 Lighter background (colorcolumn, folds)
sumiInk3 #363646 Lighter background (cursorline)
sumiInk4 #54546D Darker foreground (line numbers, fold column, non-text characters), float borders
waveBlue1 #223249 Popup background, visual selection background
waveBlue2 #2D4F67 Popup selection background, search background
winterGreen #2B3328 Diff Add (background)
winterYellow #49443C Diff Change (background)
winterRed #43242B Diff Deleted (background)
winterBlue #252535 Diff Line (background)
autumnGreen #76946A Git Add
autumnRed #C34043 Git Delete
autumnYellow #DCA561 Git Change
samuraiRed #E82424 Diagnostic Error
roninYellow #FF9E3B Diagnostic Warning
waveAqua1 #6A9589 Diagnostic Info
dragonBlue #658594 Diagnostic Hint
fujiGray #727169 Comments
springViolet1 #938AA9 Light foreground
oniViolet #957FB8 Statements and Keywords
crystalBlue #7E9CD8 Functions and Titles
springViolet2 #9CABCA Brackets and punctuation
springBlue #7FB4CA Specials and builtin functions
lightBlue #A3D4D5 Not used
waveAqua2 #7AA89F Types
springGreen #98BB6C Strings
boatYellow1 #938056 Not used
boatYellow2 #C0A36E Operators, RegEx
carpYellow #E6C384 Identifiers
sakuraPink #D27E99 Numbers
waveRed #E46876 Standout specials 1 (builtin variables)
peachRed #FF5D62 Standout specials 2 (exception handling, return)
surimiOrange #FFA066 Constants, imports, booleans
katanaGray #717C7C Deprecated

Extras

Acknowledgements

Related projects

  • kanagawa.vim - unaffiliated vimscript port of kanagawa.nvim

Donate

Buy me coffee and support my work ;)

Donate



Alternative Project Comparisons
Related Awesome Lists
Top Programming Languages
Top Projects

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Lua (35,789
Neovim (4,314
Color Scheme (3,028
Palette Generation (41