A pixel-faithful port of Cursor IDE's default Dark Modern colorscheme to Vim and Neovim.
If you switch between Cursor and (Neo)Vim through the day, this keeps the visual context identical: same backgrounds, same syntax hues, same accents, same diagnostic colors.
- Vim 8+ and Neovim ≥ 0.8 support, single repo, no duplication
- Treesitter highlight groups (
@comment,@function,@keyword.*, …) - LSP semantic tokens (
@lsp.type.*,@lsp.typemod.*) - CoC.nvim semantic token groups (
CocSem*) — purple-class fix included - Dimmed inlay hints so type hints fade into the background
- Diagnostics, diff, gitsigns / GitGutter / Signify
- Telescope, nvim-tree, neo-tree, NERDTree, bufferline, lualine-friendly
- nvim-cmp, WhichKey, indent-blankline
- Terminal ANSI colors that match Cursor's integrated terminal
- True-color only (
termguicolors)
| Role | Hex | Notes |
|---|---|---|
| Editor bg | #1f1f1f | editor.background |
| Sidebar / status bg | #181818 | sideBar.background |
| Float bg | #252526 | popups, hover |
| Cursor line | #2a2a2a | |
| Selection | #264f78 | |
| Accent | #0098ff | focus border, links |
| Comment | #6a9955italic | |
| String | #ce9178 | |
| Number | #b5cea8 | |
| Keyword | #569cd6 | |
| Control flow | #c586c0 | if / return / import / decorators |
| Function | #dcdcaa | |
| Type / Class | #4ec9b0 | |
| Variable / Property | #9cdcfe | |
| Constant | #4fc1ff | |
| Error / Warn / Info / Hint | #f14c4c / #cca700 / #3794ff / #b267e6 |
Neovim — lazy.nvim
{
'fmflurry/cursor.vim',
lazy=false,
priority=1000,
config=function()
require('cursor').setup({
transparent=false,
italic_comments=true,
dim_inlay_hints=true,
desaturate_types=false,
overrides= {
-- Comment = { fg = '#7faa72' },
},
})
end,
}Or skip the helper module and just:
vim.cmd.colorscheme('cursor')Neovim — packer.nvim
use { 'fmflurry/cursor.vim', config=function() vim.cmd.colorscheme('cursor') end }Vim — vim-plug
Plug 'fmflurry/cursor.vim'" then in your vimrc:settermguicolorscolorschemecursorgit clone https://github.com/fmflurry/cursor.vim ~/.vim/pack/themes/start/cursor.vim
# Neovim:
git clone https://github.com/fmflurry/cursor.vim ~/.config/nvim/pack/themes/start/cursor.vimThen add to vimrc / init.lua:
settermguicolorscolorschemecursorPass these to require('cursor').setup({ ... }):
| Option | Default | Effect |
|---|---|---|
transparent | false | Strip background from Normal, SignColumn, LineNr, EndOfBuffer |
italic_comments | true | Match Cursor IDE's italic comments |
dim_inlay_hints | true | LSP inlay hints render at #5a5a5a italic |
desaturate_types | false | Soften @type / @lsp.type.class from #4ec9b0 → #7aa89c |
overrides | {} | Table of { Group = { fg, bg, ... } } applied last |
If you use coc.nvim and TypeScript
class names look bright purple instead of teal, that's CoC's semantic-token
defaults overriding the syntax. cursor.vim ships overrides for every
CocSem* group — restart CoC after switching themes:
:colorschemecursor
:CocCommand semanticTokens.refreshCurrentTo dim TS inlay hints, the theme also styles CocInlayHint,
CocInlayHintType, CocInlayHintParameter.
A matching lualine theme is on the roadmap. For now use:
require('lualine').setup({ options= { theme='auto' } })🟢 Editor UI · syntax · Treesitter · LSP semantic · CoC.nvim · diagnostics · diff 🟡 Lualine custom theme — pending 🟡 Lightline · airline · heirline themes — pending 🟡 Bufferline custom palette — partial
PRs welcome.
MIT — do whatever you want, attribution appreciated.
- Cursor IDE team for the original Dark Modern theme this ports.
- Microsoft VSCode for the upstream Dark Modern palette Cursor forks.
- Built with help from Claude Code.
