moonfly is a dark colorscheme for Vim & Neovim inspired by:
👉 I maintain another dark Vim theme named nightfly which may be of interest.
The font in use is Iosevka.
- Neovim Treesitter
- Neovim LSP Diagnostics
- ALE
- Barbar
- BufExplorer
- clever-f
- CtrlP
- Fern
- fzf.vim (with matching fly16 bat theme)
- GitGutter
- Gitsigns
- Hop
- indentLine
- lightline
- Lualine
- NERDTree
- nvim-cmp
- NvimTree
- Signify
- Telescope
- Tagbar
- vim-airline
Install the bluz71/vim-moonfly-colors colorscheme with your preferred plugin manager.
Plug 'bluz71/vim-moonfly-colors'
use 'bluz71/vim-moonfly-colors'
Enable the colorscheme after the plugin declaration.
" Vimscript initialization file
colorscheme moonfly
-- Lua initialization file
vim.cmd [[colorscheme moonfly]]
- The moonfly colorscheme supports lightline. To enable the moonfly lightline colorscheme please add the following to your initialization file:
let g:lightline = { 'colorscheme': 'moonfly' }
-
The moonfly colorscheme supports vim-airline. For modern versions of vim-airline the moonfly theme will automatically be loaded.
-
The moonfly colorscheme supports lualine. To enable the moonfly theme please add the following to your initialization file:
require('lualine').setup({options = {theme = 'moonfly'}})
- Lastly, my own vim-moonfly-statusline is available for those that just want a very simple yet informative moonfly themed status line.
The moonflyCursorColor
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:moonflyCursorColor = 1
-- Lua initialization file
vim.g.moonflyCursorColor = 1
The moonflyItalics
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:moonflyItalics = 0
-- Lua initialization file
vim.g.moonflyItalics = 0
The moonflyNormalFloat
option specifies whether to use moonfly 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 moonfly colors instead then add the
following to your configuration:
" Vimscript initialization file
let g:moonflyNormalFloat = 1
-- Lua initialization file
vim.g.moonflyNormalFloat = 1
💡 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'
}
)
local opts = {noremap = true, silent = true}
vim.api.nvim_buf_set_keymap(0, 'n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next({severity_limit = "Warning", popup_opts = {border = "single"}})<CR>', opts)
vim.api.nvim_buf_set_keymap(0, 'n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev({severity_limit = "Warning", popup_opts = {border = "single"}})<CR>', opts)
The moonflyTerminalColors
option specifies whether to use the moonfly color
palette in :terminal
windows when termguicolors
is set. By default this
option is enabled. If you prefer not to use the moonfly color palette for
the first 16 terminal colors then add the following to your initialization file:
" Vimscript initialization file
let g:moonflyTerminalColors = 0
-- Lua initialization file
vim.g.moonflyTerminalColors = 0
The moonflyTransparent
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:moonflyTransparent = 1
-- Lua initialization file
vim.g.moonflyTransparent = 1
The moonflyUndercurls
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:moonflyUndercurls = 0
-- Lua initialization file
vim.g.moonflyUndercurls = 0
The moonflyUnderlineMatchParen
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:moonflyUnderlineMatchParen = 1
-- Lua initialization file
vim.g.moonflyUnderlineMatchParen = 1
The moonflyVertSplits
option specifies whether to show vertical split
columns. By default vertical split columns will be visible. If you would like
vertical split columns to not be visible then add the following to your
configuration:
" Vimscript initialization file
let g:moonflyVertSplits = 0
-- Lua initialization file
vim.g.moonflyVertSplits = 0
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
moonfly colorscheme will not require any terminal configuration to emit the
correct theme colors.
For the true color moonfly 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"
A collection of moonfly-flavoured terminal themes are provided for those using
moonfly with termguicolors
(cterm
users should refer to the next section
and not use these terminal themes):
-
iTerm2 users on macOS can import this colorscheme.
-
Alacritty users can copy this theme into their
alacritty.yml
configuration. -
Gnome Terminal users can run this script to create a Moonfly 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 above, inPreferences
/Moonfly
/Colors
.
For other terminals please configure appropriately with the following colors:
The moonfly colorscheme, when used absent termguicolors
, requires the
host terminal be configured with a specific color palette. In that case the
legacy moonfly cterm
256 color terminal theme will be used.
termguicolors
set.
If that is not possible, then the terminal
emulator must be configured
for 256 colors, which usually means setting the terminal's type to
xterm-256color
, or screen-256color
when used inside
tmux.
The terminal should then be configured with the following moonfly colors:
Background: #080808
Foreground: #b2b2b2
Bold: #eeeeee
Cursor: #9e9e9e
Cursor Text: #080808
Selection: #b2ceee
Selection Text: #080808
Color 1 (Black): #323437
Color 2 (Red): #ff5454
Color 3 (Green): #8cc85f
Color 4 (Yellow): #e3c78a
Color 5 (Blue): #80a0ff
Color 6 (Purple): #d183e8
Color 7 (Cyan): #79dac8
Color 8 (White): #de935f
Color 9 (Bright Black): #f09479
Color 10 (Bright Red): #ff5189
Color 11 (Bright Green): #36c692
Color 12 (Bright Yellow): #bfbf97
Color 13 (Bright Blue): #74b2ff
Color 14 (Bright Purple): #ae81ff
Color 15 (Bright Cyan): #85dc85
Color 16 (Bright White): #e2637f