kaicataldo / material.vim

🎨 A port of the Material color scheme for Vim/Neovim
MIT License
610 stars 71 forks source link

material.vim

A port of the Material color scheme for Vim/Neovim.

Installation

Using vim-plug (modify this to work with your Vim package manager of choice):

Plug 'kaicataldo/material.vim', { 'branch': 'main' }

Usage

To enable this color scheme, add the following to your Vim (~/.vimrc) or Neovim (~/.config/nvim/init.vim) configuration:

colorscheme material

True Colors

True colors are a requirement for this color scheme to work properly. To enable this, place the following in your ~/.vimrc or ~/.config/nvim/init.vim file:

" For Neovim 0.1.3 and 0.1.4 - https://github.com/neovim/neovim/pull/2198
if (has('nvim'))
  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

Theme

There are five color schemes - default, palenight, ocean, lighter, and darker.

Aditionally, Material's legacy edition (Community Material), is supported for each color scheme - default-community, palenight-community, ocean-community, lighter-community, and darker-community.

This amounts to a total of ten theme options (defaulting to default), that can be configured as follows:

let g:material_theme_style = 'default' | 'palenight' | 'ocean' | 'lighter' | 'darker' | 'default-community' | 'palenight-community' | 'ocean-community' | 'lighter-community' | 'darker-community'

Italics

To enable italics (0 or off by default), please add the following to your configuration file:

let g:material_terminal_italics = 1

Full configuration example

let g:material_terminal_italics = 1
let g:material_theme_style = 'lighter'
colorscheme material

JavaScript

The vim-javascript plugin, which provides fine-grained JS syntax highlighting features, is highly recommended for proper JavaScript highlighting. The theme will still work without the plugin, however JS highlighting will be minimal.

lightline.vim

To use the theme, install lightline.vim with your Vim package manager of choice and then add the following to your configuration file:

let g:lightline = { 'colorscheme': 'material_vim' }

The theme will change to match the theme option specified.

Note: The included theme is called material_vim because lightline.vim comes with its own version of a material theme (which does not change based on the theme version selected).

airline.vim

To use the included vim-airline theme:

let g:airline_theme = 'material'

lualine.nvim

To use the included lualine.nvim theme:

require('lualine').setup({
  options = {
    theme = require('material.lualine'),
  },
})

Terminal Color Scheme

Corresponding terminal color schemes are included in this repo. You can find them here.

Vim in macOS

The default version of vim on macOS doesn't support termguicolors. In order for the colorscheme to work properly you need to apply the terminal colors from above. Or you can install the latest version from brew.

Troubleshooting

Italics not rendering correctly

Italicized text sometimes does not rendering correctly in iTerm2. Before making an issue, if you use iTerm2, please see if this addition to your .vimrc fixes the issue for you:

" Fix italics in Vim
if !has('nvim')
  let &t_ZH="\e[3m"
  let &t_ZR="\e[23m"
endif

Thanks

Thanks to @equinusocio for the original Material theme as well as palenight.vim and quantum, both of which were of great help when I first started this project.