vim-nightfly-colors
vim-nightfly-colors copied to clipboard
A dark midnight theme for modern Neovim & classic Vim
nightfly is a dark GUI colorscheme for Vim & Neovim.
:point_right: I maintain another dark Vim theme named moonfly which may be of interest.
Screenshot
Styled Features & Plugins
Vim & Neovim compatible:
- ALE
- BufExplorer
- clever-f
- CtrlP
- Fern
- fzf.vim (works best with matching fly16 bat theme)
- GitGutter
- indentLine
- lightline
- NERDTree
- Signify
- Tagbar
- vim-airline
Neovim-only:
- Neovim Treesitter
- Neovim Diagnostic
- Barbar
- Bufferline
- Dashboard
- Gitsigns
- Hop
- Indent BlankLine
- Lualine
- Mini
- Neo-tree
- nvim-cmp
- NvimTree
- Telescope
:zap: Requirements
nightfly is a GUI-only colorscheme.
A GUI client, such as Gvim, or a modern terminal version of Vim or Neovim with
termguicolors
enabled in a true-color terminal, is required. Details about
true-color terminals are listed below.
nightfly explicitly does not support the 256 color cterm
version of Vim
due to the number of custom colors required. 256 color terminals only allow 16
custom colors. I encourage terminal users to use a true-color terminal, such as:
iTerm2,
Alacritty,
Windows Terminal, or
kitty and enable the
termguicolors
option.
Installation
Install the bluz71/vim-nightfly-guicolors colorscheme with your preferred plugin manager.
Plug 'bluz71/vim-nightfly-guicolors'
use 'bluz71/vim-nightfly-guicolors'
Usage
Enable the colorscheme after the plugin declaration.
" Vimscript initialization file
colorscheme nightfly
-- Lua initialization file
vim.cmd [[colorscheme nightfly]]
Statusline
- The nightfly colorscheme supports lightline. To enable the nightfly lightline colorscheme please add the following to your initialization file:
let g:lightline = { 'colorscheme': 'nightfly' }
-
The nightfly colorscheme supports vim-airline. The nightfly theme will load once vim-airline starts.
-
The nightfly colorscheme supports Lualine. The nightfly theme will automatically load once Lualine starts.
-
Lastly, my own mistfly-statusline is available for those that want a simple, fast and informative status line.
:wrench: Options
Option | Default State |
---|---|
nightflyCursorColor | Disabled |
nightflyItalics | Enabled |
nightflyNormalFloat | Disabled |
nightflyTerminalColors | Enabled |
nightflyTransparent | Disabled |
nightflyUndercurls | Enabled |
nightflyUnderlineMatchParen | Disabled |
nightflyWinSeparator | 1 |
nightflyCursorColor
The nightflyCursorColor
option specifies whether to color the cursor or not.
By default the cursor will NOT be colored. If you prefer a colored cursor
then add the following to your initialization file:
" Vimscript initialization file
let g:nightflyCursorColor = v:true
-- Lua initialization file
vim.g.nightflyCursorColor = true
nightflyItalics
The nightflyItalics
option specifies whether to use italics for comments and
certain HTML elements in GUI versions of Vim. By default this option is
enabled. If you do not like the appearance of italics then add the following
to your initialization file:
" Vimscript initialization file
let g:nightflyItalics = v:false
-- Lua initialization file
vim.g.nightflyItalics = false
nightflyNormalFloat
The nightflyNormalFloat
option specifies whether to use nightfly background
and foreground colors in Neovim floating windows. By default this option is
disabled, hence, Neovim floating windows will usually be styled with popup
menu colors. If you would like to use nightfly colors instead then add the
following to your configuration:
" Vimscript initialization file
let g:nightflyNormalFloat = v:true
-- Lua initialization file
vim.g.nightflyNormalFloat = true
:bulb: If the above option is set then it is highly recommended to enable floating window borders to distinguish between the edit and floating windows in Neovim's LSP client, for example:
vim.lsp.handlers['textDocument/hover'] = vim.lsp.with(
vim.lsp.handlers.hover, {
border = "single"
}
)
vim.lsp.handlers['textDocument/signatureHelp'] = vim.lsp.with(
vim.lsp.handlers.signatureHelp, {
border = "single"
}
)
vim.diagnostic.config({ float = { border = "single" } })
:bulb: Likewise, nvim-cmp may be
configured as follows for nicer display when g:nightflyNormalFloat
is enabled:
local winhighlight = {
winhighlight = "Normal:NormalFloat,FloatBorder:FloatBorder,CursorLine:PmenuSel",
}
require('cmp').setup({
window = {
completion = cmp.config.window.bordered(winhighlight),
documentation = cmp.config.window.bordered(winhighlight),
}
})
nightflyTerminalColors
The nightflyTerminalColors
option specifies whether to use the nightfly color
palette in :terminal
windows when termguicolors
is set. By default this
option is enabled. If you prefer not to use the nightfly color palette for
the first 16 terminal colors then add the following to your initialization file:
" Vimscript initialization file
let g:nightflyTerminalColors = v:false
-- Lua initialization file
vim.g.nightflyTerminalColors = false
nightflyTransparent
The nightflyTransparent
option specifies whether to use an opaque or
transparent background in GUI versions of Vim. By default this option is
disabled. If you would like a transparent background then add the following
to your initialization file:
" Vimscript initialization file
let g:nightflyTransparent = v:true
-- Lua initialization file
vim.g.nightflyTransparent = true
nightflyUndercurls
The nightflyUndercurls
option specifies whether to use undercurls for
spelling and linting errors in GUI versions of Vim, including terminal Vim with
termguicolors
set. By default this option is enabled. If you do not like
the appearance of undercurls then add the following to your initialization file:
" Vimscript initialization file
let g:nightflyUndercurls = v:false
-- Lua initialization file
vim.g.nightflyUndercurls = false
nightflyUnderlineMatchParen
The nightflyUnderlineMatchParen
option specifies whether to underline
matching parentheses. By default this option is disabled. If you want to
underline matching parentheses then add the following to your initialization
file:
" Vimscript initialization file
let g:nightflyUnderlineMatchParen = v:true
-- Lua initialization file
vim.g.nightflyUnderlineMatchParen = true
nightflyWinSeparator
The nightflyWinSeparator
option specifies the style of window separators:
-
0
will display no window separators -
1
will display block separators; this is the default -
2
will diplay line separators
For example, if line separators are desired then add the following to your configuration:
" Vimscript initialization file
let g:nightflyWinSeparator = 2
-- Lua initialization file
vim.g.nightflyWinSeparator = 2
:gift: If using Neovim 0.7 (or later), the following configuration will improve
the look of line separators (if option 2
has been chosen) by selecting thicker
characters for the separators:
" Vimscript initialization file
set fillchars=horiz:━,horizup:┻,horizdown:┳,vert:┃,vertleft:┨,vertright:┣,verthoriz:╋
-- Lua initialization file
vim.opt.fillchars = { horiz = '━', horizup = '┻', horizdown = '┳', vert = '┃', vertleft = '┫', vertright = '┣', verthoriz = '╋', }
True Color Terminals
Many modern terminals support 24-bit true
colors. Current versions of Vim &
Neovim on such terminals support true colors when set termguicolors
is
enabled.
A list of popular terminals that support true colors:
On terminals that support true colors, and when termguicolors
is set, the
nightfly colorscheme will emit the correct theme colors.
For the nightfly colorscheme to display correctly inside tmux the following setting will usually be required in ~/.tmux.conf:
set -ga terminal-overrides ',xterm-256color:Tc'
Vim, as against Neovim, inside tmux, will also require the following settings
be added to the ~/.vimrc
file:
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
Terminal Themes
A collection of nightfly-flavoured terminal themes are provided:
-
iTerm2 users on macOS can import this colorscheme
-
Alacritty users can copy this theme into their
alacritty.yml
configuration. -
Windows Terminal users can copy this theme into their
settings.json
configuration. -
kitty users can use this theme
-
GNOME Terminal users can run this script to create a Nightfly profile. Before executing the script, please install the
dconf-cli
command line utility for modern versions of Gnome (3.28 and later), for examplesudo apt install dconf-cli
. After executing the script, please set the cursor and selection colors by hand, with the appropriate color values listed below, inPreferences
/Nightfly
/Colors
.
For other terminals please configure appropriately with the following colors:
Type | Category | Value | Color |
---|---|---|---|
Background | Background | #011627 |
|
Foreground | Foreground | #acb4c2 |
|
Bold | Bold | #eeeeee |
|
Cursor | Cursor | #9ca1aa |
|
Cursor Text | Cursor Text | #080808 |
|
Selection | Selection | #b2ceee |
|
Selection Text | Selection Text | #080808 |
|
Color 1 | Black (normal) | #1d3b53 |
|
Color 2 | Red (normal) | #fc514e |
|
Color 3 | Green (normal) | #a1cd5e |
|
Color 4 | Yellow (normal) | #e3d18a |
|
Color 5 | Blue (normal) | #82aaff |
|
Color 6 | Purple (normal) | #c792ea |
|
Color 7 | Cyan (normal) | #7fdbca |
|
Color 8 | White (normal) | #a1aab8 |
|
Color 9 | Black (bright) | #7c8f8f |
|
Color 10 | Red (bright) | #ff5874 |
|
Color 11 | Green (bright) | #21c7a8 |
|
Color 12 | Yellow (bright) | #ecc48d |
|
Color 13 | Blue (bright) | #82aaff |
|
Color 14 | Purple (bright) | #ae81ff |
|
Color 15 | Cyan (bright) | #7fdbca |
|
Color 16 | White (bright) | #d6deeb |