A dark Vim color scheme inspired by Atom's One Dark syntax theme.
VimL
Latest commit 5fa6ebd Dec 24, 2016 @simonsmith simonsmith committed with JS fixes (#71)
* Update vim-javascript colours

This catches a few changes made to vim-javascript as well as fixing a
few incorrect colours such as import/export

* Fix incorrect colours in yajs

Both properties and values in static class objects were being
highlighted entirely purple.

README.md

onedark.vim

A dark Vim color scheme for the GUI and 16/256-color terminals, based on FlatColor, with colors inspired by the excellent One Dark syntax theme for the Atom text editor.

onedark.vim Preview

Installation

  1. If you use Vim in the terminal, determine whether your terminal emulator has 24-bit color ("true color") support.

    Note that proper colors will always be shown when using GUI Vim, regardless of the configuration done in this step.

    • If your terminal emulator DOES support 24-bit color, add the following lines to your ~/.vimrc (this works for Vim patch 7.4.1799 and above, as well as Neovim version 0.1.3 and above; if you use tmux, see the tmux-related notes at the top):

      "Use 24-bit (true-color) mode in Vim/Neovim when outside tmux.
      "If you're using tmux version 2.2 or later, you can remove the outermost $TMUX check and use tmux's 24-bit color support
      "(see < http://sunaku.github.io/tmux-24bit-color.html#usage > for more information.)
      if (empty($TMUX))
        if (has("nvim"))
          "For Neovim 0.1.3 and 0.1.4 < https://github.com/neovim/neovim/pull/2198 >
          let $NVIM_TUI_ENABLE_TRUE_COLOR=1
        endif
        "For Neovim > 0.1.5 and Vim > patch 7.4.1799 < https://github.com/vim/vim/commit/61be73bb0f965a895bfb064ea3e55476ac175162 >
        "Based on Vim patch 7.4.1770 (`guicolors` option) < https://github.com/vim/vim/commit/8a633e3427b47286869aa4b96f2bfc1fe65b25cd >
        " < https://github.com/neovim/neovim/wiki/Following-HEAD#20160511 >
        if (has("termguicolors"))
          set termguicolors
        endif
      endif
    • If you [additionally] use older versions of Vim/Neovim than mentioned above, or your terminal emulator DOES NOT support 24-bit color, or you use tmux 2.1 or earlier:

      You have two options, 16-color mode (which is preferred) or 256-color mode. These modes are selected via the g:onedark_termcolors setting. When Vim/Neovim are actively using true-color mode as configured above, the g:onedark_termcolors setting will be be ignored. However, g:onedark_termcolors can still coexist with the configuration above. For instance, when tmux 2.1 or earlier and/or older Vim/Neovim versions are used with the configuration above, g:onedark_termcolors will be honored/not ignored.

      • 16-color mode is the preferred option, since its colors are more accurate than those of 256-color mode. However, you'll need to set your terminal's color palette to this color scheme's custom 16-color palette, since 16-color mode will cause the color scheme to use your terminal emulator's native 16 colors. If you don't use the custom 16-color palette in your terminal emulator when 16-color mode is enabled, the color scheme's colors will not display correctly.

        The canonical version of the 16-color palette is an iTerm2 color scheme called One Dark.itermcolors, which lives in the root of this repository. One Dark.itermcolors only works with the test/beta releases of iTerm2 (versions 2.9.x and later.) You should be able to easily convert the iTerm2 color scheme for use with your terminal emulator of choice by using a tool like termcolors.

        Assuming you're using the custom 16-color palette as described above, add the following line to your ~/.vimrc to enable 16-color mode:

        let g:onedark_termcolors=16
      • 256-color mode is enabled by default with no additional configuration, but colors are less accurate since they are approximated using a 256-color palette. The background color will appear darker, and most other colors will appear brighter. If you don't want to change your terminal's color palette as described in the 16-color mode section above, and your terminal doesn't support 24-bit color, 256-color mode is your only option.

        Although 256-color mode is enabled by default (when not using 24-bit color as described above), you can explicitly enable it by adding the following line to your ~/.vimrc:

        let g:onedark_termcolors=256
  2. Place onedark.vim in your ~/.vim/colors/ directory either manually or by using your Vim plug-in manager of choice, then add the following lines to your ~/.vimrc below the lines you added during step 1:

    syntax on
    colorscheme onedark
  3. Installing the sheerun/vim-polyglot plug-in is recommended for improved syntax highlighting for various languages, but is not required.

Options

Note: All options should be set before the colorscheme onedark line in your ~/.vimrc.

  • g:onedark_termcolors (see Installation (above) before using this setting): Set to 256 for 256-color terminals (the default), or set to 16 to use your terminal emulator's native colors.

  • g:onedark_terminal_italics: Set to 1 if your terminal emulator supports italics; 0 otherwise (the default). If you're using iTerm2 on macOS, you might need to use a special TERMINFO to get italics working.

lightline.vim Colorscheme

lightline-onedark.vim Preview

This repository includes a companion lightline.vim colorscheme for use with onedark.vim.

The lightline.vim colorscheme:

  • Depends on onedark.vim for its colors, and must therefore be used in conjunction with it.
  • Works with both color modes available in onedark.vim (16 or 256 colors), as specified in the configuration for onedark.vim.

Installation

(These instructions assume that lightline.vim and onedark.vim are already installed and configured to your liking.)

Place onedark.vim/autoload/lightline/colorscheme/onedark.vim in your ~/.vim/autoload/lightline/colorscheme/ directory either manually or by using your Vim plug-in manager of choice, then add the following lines to your ~/.vimrc (or merge them into your existing lightline.vim configuration):

let g:lightline = {
  \ 'colorscheme': 'onedark',
  \ }

vim-airline Theme

airline-onedark.vim Preview

This repository includes a companion vim-airline theme for use with onedark.vim.

The vim-airline theme:

  • Depends on onedark.vim for its colors, and must therefore be used in conjunction with it.
  • Works with both color modes available in onedark.vim (16 or 256 colors), as specified in the configuration for onedark.vim.
  • Is based on vim-airline's "tomorrow" theme.

Installation

(These instructions assume that vim-airline and onedark.vim are already installed and configured to your liking.)

Place onedark.vim/autoload/airline/themes/onedark.vim in your ~/.vim/autoload/airline/themes/ directory either manually or by using your Vim plug-in manager of choice, then add the following line to your ~/.vimrc:

let g:airline_theme='onedark'

FAQ

How can I customize onedark.vim's look without forking the repository?

onedark.vim exposes a function called onedark#set_highlight that you can call from within your ~/.vimrc in order to customize the look of onedark.vim by overriding its defaults.

The function's first argument should be the name of a highlight group, and its second argument should be style data.

For example, to remove the background color only when running in terminals (outside GUI mode and for use in transparent terminals,) place the following lines before the colorscheme onedark line in your ~/.vimrc:

" onedark.vim override: Don't set a background color when running in a terminal;
" just use the terminal's background color
" `gui` is the hex color code used in GUI mode/nvim true-color mode
" `cterm` is the color code used in 256-color mode
" `cterm16` is the color code used in 16-color mode
if (has("autocmd") && !has("gui"))
  let s:white = { "gui": "#ABB2BF", "cterm": "145", "cterm16" : "7" }
  autocmd ColorScheme * call onedark#set_highlight("Normal", { "fg": s:white }) " No `bg` setting
end

More examples of highlight group names and style data can be found in onedark.vim's source code (colors/onedark.vim inside this repository).


Preview images were taken using: