✨ Elegant pastel colorschemes for Neovim with advanced customization, styles, and integrations
A modern Neovim colorscheme plugin featuring beautifully crafted pastel themes with rich customization, plugin integrations, and flexible styling.
✨ Features
- 🎨 Beautiful pastel color schemes
- 🌗 Automatic dark/light background support
- 🧩 Built-in highlights for many popular plugins
- ⚙️ Fully customizable colors, highlights, and styles
- 🪶 Lightweight and fast
- 🔍 Per-filetype configuration support
- 🚫 Fine-grained exclusion system
🎨 Palettes
pasteldark
pastelblack
pastelsoft
pastelrose
pastelmint
pastelfrost
Check more vimcolorschemes
📦 Installation
Install using your preferred plugin manager.
- lazy.nvim
{
"ankushbhagats/pastel.nvim",
lazy = false, -- disable lazy loading
priority = 1000, -- load immediately at startup
opts = {}, -- your configuration comes here
config = true -- call setup function with provided opts
}
- packer.nvim
use {
"ankushbhagats/pastel.nvim",
config = function()
require("pastel").setup()
end
}
🎨 Usage
- Apply a colorscheme
vim.cmd.colorscheme("pasteldark")
- Enable automatic background switching
vim.cmd.colorscheme("pastel")
- Force set a colorscheme via plugin config
{
palette = "pastelsoft"
}
⚙️ Default Configuration
require("pastel").setup({
background = {
dark = "pasteldark",
light = "pastelsoft",
},
palette = nil,
termguicolors = true,
style = {
transparent = false,
inactive = true,
border = true,
float = true,
border = true,
bold = true,
italic = false,
underline = true,
invert_title = false,
simple_syntax = false,
dynamic_statusline = false,
},
colors = {
common = {},
global = {},
},
highlights = {
global = {},
},
exclude = {
core = {},
plugins = {},
},
filetypes = {},
})
🎨 Available Color Schemes
pasteldark pastelblack pastelsoft pastelfrost pastelrose pastelcloud pastelglow pastelshell pastelcool pastelgold pastelsilk pastelcream pastelmint pastelsnow pastelfog pastelpop pastelwarm pastelforest pastelrice pastelwhite
🧠 Style System
The "style" table controls UI appearance.
Special Behavior
You can use ""\*"" to apply a setting globally:
style = {
bold = "*", -- enable bold everywhere
italic = false, -- disable all italics
underline = true, -- use default underline behavior
}
- ""\*"" → apply everywhere
- "true" → use default behavior
- "false" → disable completely
🎯 Colors Customization
Modify base colors globally or per colorscheme.
Global colors:
colors = {
global = {
yellow = "#eedd00",
cyan = "#aaffff",
}
}
Per-colorscheme colors
colors = {
pasteldark = {
blue = "#11aaee",
red = "#ffa0a0",
}
}
🎨 Highlights Customization
Highlights accept functions.
Global highlights:
highlights = {
global = function(hl, c)
hl.Normal = { bg = "#333a3b", fg = "#808980" }
hl.Comment.italic = true
hl.GitSignsChange.fg = c.blue
end
}
Per-colorscheme highlights
highlights = {
pasteldark = function(hl, c)
hl.CursorLine.bg = "#302920"
end
}
🚫 Exclude System
Disable specific highlight group file/plugin.
exclude = {
core = {
syntax = true,
},
plugins = {
telescope = true,
},
}
📁 Filetype-specific Config
Apply custom settings per filetype.
filetypes = {
lua = {
colors = {
purple = "#ffccff",
},
style = {
italic = true,
},
},
markdown = {
highlights = function(hl, c)
hl.Title.bold = true
end,
},
}
🧩 Supported Plugin Highlights
"pastel.nvim" ships with built-in highlight support for a wide range of popular plugins.
- Total Count: 45
- aerial
- bufferline
- dashboard-nvim
- neo-tree
- nvim-tree
- nvim-window-picker
- symbols-outline
- which-key
- fzf
- hop
- flash
- lightspeed
- telescope
- coc
- mason
- blink-cmp
- nvim-cmp
- nvim-navic
- neotest
- nvim-dap
- nvim-dapui
- gitsigns
- gitgraph
- neogit
- treesitter
- treesitter-context
- nvim-ts-rainbow
- nvim-ts-rainbow2
- rainbow-delimiters
- indent-blankline
- indentmini
- vim-illuminate
- vim-visual-multi
- vimwiki
- todo-comments
- noice
- nvim-notify
- snacks
- render-markdown
- lazy
- mini
- miniicons
- ministarter
- avante
- beacon
💡 You can disable any plugin highlights using the "exclude.plugins" option:
require("pastel").setup({
exclude = {
plugins = {
telescope = true,
gitsigns = true,
},
},
})
🛠 Example Configurations
Minimal setup
require("pastel").setup()
vim.cmd("colorscheme pasteldark")
Transparent background
require("pastel").setup({
style = {
transparent = true,
},
})
Everything bold & italic globally
require("pastel").setup({
style = {
bold = "*",
italic = "*",
},
})
Override colors + highlights
require("pastel").setup({
colors = {
global = {
green = "#0d0d0d",
},
},
highlights = {
global = function(hl, c)
hl.Normal.bg = c.red hl.CursorLine.bg = "#1a1a1a" end, }, })
📌 Notes
- "termguicolors" should be enabled for best experience
- Works with both dark and light backgrounds
- Highly customizable without sacrificing performance
❤️ Contributing
Feel free to open issues or submit PRs to improve themes, add integrations, or enhance features.
📄 License
GNU General Public License v3
📝 Credits
Highlights adapted from AstroTheme. Thanks to the original authors.