Skip to main content

🎨 Colorscheme

FtVim uses Catppuccin as the default colorscheme. This guide shows you how to customize or change it.

Changing Catppuccin Flavor

Catppuccin has four flavors: latte (light), frappe, macchiato, and mocha (darkest).

Create ~/.config/nvim/lua/plugins/colorscheme.lua:

return {
{
"catppuccin/nvim",
name = "catppuccin",
opts = {
flavour = "frappe", -- latte, frappe, macchiato, mocha
},
},
}

Using a Different Colorscheme

Step 1: Add the Colorscheme Plugin

Create ~/.config/nvim/lua/plugins/colorscheme.lua:

return {
-- Add your preferred colorscheme
{
"folke/tokyonight.nvim",
lazy = false,
priority = 1000,
config = function()
vim.cmd.colorscheme("tokyonight")
end,
},

-- Optionally disable catppuccin
{ "catppuccin/nvim", enabled = false },
}

Step 2: Restart Neovim

The new colorscheme will be applied automatically.

Here are some popular colorschemes you can use:

Tokyo Night

{
"folke/tokyonight.nvim",
lazy = false,
priority = 1000,
opts = {
style = "night", -- night, storm, day, moon
},
config = function(_, opts)
require("tokyonight").setup(opts)
vim.cmd.colorscheme("tokyonight")
end,
}

Rose Pine

{
"rose-pine/neovim",
name = "rose-pine",
lazy = false,
priority = 1000,
opts = {
variant = "main", -- main, moon, dawn
},
config = function(_, opts)
require("rose-pine").setup(opts)
vim.cmd.colorscheme("rose-pine")
end,
}

Kanagawa

{
"rebelot/kanagawa.nvim",
lazy = false,
priority = 1000,
opts = {
theme = "wave", -- wave, dragon, lotus
},
config = function(_, opts)
require("kanagawa").setup(opts)
vim.cmd.colorscheme("kanagawa")
end,
}

Gruvbox Material

{
"sainnhe/gruvbox-material",
lazy = false,
priority = 1000,
config = function()
vim.g.gruvbox_material_background = "medium" -- hard, medium, soft
vim.cmd.colorscheme("gruvbox-material")
end,
}

Nord

{
"shaunsingh/nord.nvim",
lazy = false,
priority = 1000,
config = function()
vim.cmd.colorscheme("nord")
end,
}

One Dark

{
"navarasu/onedark.nvim",
lazy = false,
priority = 1000,
opts = {
style = "dark", -- dark, darker, cool, deep, warm, warmer
},
config = function(_, opts)
require("onedark").setup(opts)
require("onedark").load()
end,
}

Temporary Change

To change the colorscheme temporarily (current session only):

:colorscheme <name>

For example:

:colorscheme tokyonight
note

Temporary changes are lost when you restart Neovim. For permanent changes, add the colorscheme plugin as shown above.

Customizing Colors

Most colorschemes support customization. Check the colorscheme's documentation for available options.

Example with Catppuccin:

return {
{
"catppuccin/nvim",
name = "catppuccin",
opts = {
flavour = "mocha",
transparent_background = true,
integrations = {
alpha = true,
cmp = true,
gitsigns = true,
illuminate = true,
indent_blankline = { enabled = true },
mason = true,
native_lsp = { enabled = true },
neotree = true,
notify = true,
treesitter = true,
which_key = true,
},
},
},
}