.. | ||
colors | ||
doc | ||
test | ||
.gitignore | ||
.travis.yml | ||
DESIGN.md | ||
LICENSE | ||
README.md | ||
ROADMAP.md |
PaperColor Theme
Light & Dark color schemes for terminal and graphic Vim awesome editor
Inspired by Google's Material Design
Improve code readability; great for presentation
Inclusive support
Color Ranges
Support True color / GUI-color and identical 256-color that the design is based on.
Also gracefully support down to 16-color terminal, which will use terminal native colors. You need to change the terminal colors to PaperColor palette.
In 8-color and 4-color, it might lack the necessary variation of colors to express PaperColor, but seriously let me know if you still use these kinds of terminals.
Languages and Plugins
Currently designed for these languages:
- Haskell, Erlang, Elixir, Clojure, Elm, Purescript, F#
- C, C++, Golang, Rust, Java, JavaScript, Python, Ruby, Pascal, PHP, Perl, LUA
- DTrace, SystemTap, SQL/MySQL, Octave/MATLAB, R, Lex/Flex & Yacc/Bison, ASN.1, Assembly (MIPS, GAS, NASM), Bash/Shell script, Sed, Awk, Vim script, Powershell script
- Dockerfile, Makefile, CMake, NGINX, Cucumber, YAML, JSON, HTML, XML, Markdown, reStructuredText, PlantUML, Dosini, Mail, Git commit message
- Ada, COBOL, Fortran, ALGOL, (what's your other favorite dinosaur?)
Other file types can still display well as long as your Vim is set up to recognize the language syntax even though that may not be the optimal experience. So, if the language you are working on isn't listed here, feel free to make a design request.
Plugin support: vimdiff, netrw, NERDTree, tagbar, tabline, vim-airline, vim-indent-guides, vim-startify, Agit
(see below for syntax-highlighting plugins target)
Installation
Place 'PaperColor.vim' file into 'colors' folder within your Vim directory, e.g. ~/.vim/colors/
Or simply use a plugin manager like Vundle (recommended for easy :PluginUpdate
):
Plugin 'NLKNguyen/papercolor-theme'
Then, put this in your ~/.vimrc
set t_Co=256 " This is may or may not needed.
set background=light
colorscheme PaperColor
Or using the dark version:
set background=dark
colorscheme PaperColor
To switch to dark or light variant during session: :set background=dark
or :set background=light
To quickly toggle between them, use vim-unimpaired's keymap cob
Optional: turn on line numbers and status bar
set number
set laststatus=2
User-config Options
This theme currently provides theme options and language-specific options. All config options can be stored in global variable g:PaperColor_Theme_Options
which can be set in your .vimrc
Note:
- This
g:PaperColor_Theme_Options
variable must be placed anywhere beforecolor PaperColor
command. - if the same option is provided in both a theme and a theme's variant, the value in the theme's variant options will take precedence.
Theme Options
Within section theme
, options for each theme can be specified under the theme name. The original PaperColor theme is default
. For example:
let g:PaperColor_Theme_Options = {
\ 'theme': {
\ 'default': {
\ 'transparent_background': 1
\ }
\ }
\ }
Or if you want to specify options only for a variant (dark or light) of a theme, you can specify using this pattern [theme name].light
or [theme name].dark
. For example:
let g:PaperColor_Theme_Options = {
\ 'theme': {
\ 'default.dark': {
\ 'transparent_background': 1
\ }
\ }
\ }
Color overriding
You can override any color of the theme of interest. This example is for default
theme (original PaperColor Theme), but you can specify any other theme that is registered.
The overriding setting is placed in override
key of g:PaperColor_Theme_Options
variable that you set in .vimrc
like this.
let g:PaperColor_Theme_Options = {
\ 'theme': {
\ 'default.dark': {
\ 'override' : {
\ 'color00' : ['#080808', '232'],
\ 'linenumber_bg' : ['#080808', '232']
\ }
\ }
\ }
\ }
See DESIGN.md for more details and full list of color names.
Currently available theme options
option | value | default |
---|---|---|
transparent_background |
1: use terminal background | 0: use theme background |
allow_bold |
1: use bold for certain text, 0: not at all | decided by the theme |
allow_italic |
1: use italics for certain text, 0: not at all | decided by the theme |
override |
dictionary of color key-value |
Language-specific options
In general, for each language, built-in functions and constants are not highlighted.
This is intentional; the vim syntax file often lags behind actual language development.
To override the default behavior, optionally place a language section in g:PaperColor_Theme_Options
.
An example configuration is available below
let g:PaperColor_Theme_Options = {
\ 'language': {
\ 'python': {
\ 'highlight_builtins' : 1
\ },
\ 'cpp': {
\ 'highlight_standard_library': 1
\ },
\ 'c': {
\ 'highlight_builtins' : 1
\ }
\ }
\ }
Currently available language options
language | option | value | default |
---|---|---|---|
c |
highlight_builtins |
1: enable | 0: disable |
cpp |
highlight_standard_library |
1: enable | 0: disable |
python |
highlight_builtins |
1: enable | 0: disable |
Syntax Highlighting Plugins Target
There are syntax highlighting enhancement plugins that improve upon Vim built-in syntax highlighting, and each can have many different implementations. This is the list of plugins that this color scheme targets.
- C: c-syntax.vim
- JavaScript: vim-javascript
- Jsx: vim-jsx-pretty
- JSON: vim-json
- Go: vim-go
- DTrace: dtrace-syntax-file
- SystemTap: vim-systemtap
- Haskell: haskell-vim
- PlantUML: plantuml-syntax
- Markdown: vim-markdown
- Assembly MIPS: mips
- Assembly GAS: vim-gas
- Octave/MATLAB: vim-octave
- Python: python-syntax
- Dockerfile: dockerfile.vim
- NGINX: nginx-vim-syntax
- Elixir: vim-elixir
- Elm: elm-vim
- Purescript: purescript-vim
- F#: vim-fsharp
- PowerShell: vim-ps1
- CMake: vim-cmake-syntax
- ALGOL: vim-algol68
Screenshots
Default Light
Default Dark
Have screenshots to contribute? Use this thread to upload images and get direct links.
To set vim-airline theme:
let g:airline_theme='papercolor'
To set lightline theme:
let g:lightline = { 'colorscheme': 'PaperColor' }
For more sceenshots, story behind the project, and other users' designs inspired by Paper Color, go to this blog post
Suggestions/Wishes/Questions/Comments are welcome via Github issues or via the blog above.
Related Projects Based On PaperColor
Material iTerm theme by Christoph Hermann
Material Terminator (terminal emulator) theme by Marco Herrero
Terminal Theme by Fixles
PaperColor Light for iTerm2 by ASeom Han
PaperColor for Terminal.app by tomotargz
PaperColor Light for konsole by z2oh
PaperColor Theme for Vis Editor by Jan Christoph Ebersbach
Airline PaperColor Theme for Emacs Powerline by Anthony DiGirolamo
Airline PaperColor Theme for Vim Lightline
Ninrod's vim + tmux + zsh
dotfiles by Filipe Silva
PaperColor for Vscode by rozbo
PaperColor theme for Hyper by Rafael Rinaldi
PaperColor Theme for kitty by Cyril Raffatelli
PaperColor Light theme for cmus by eremit
Feel free to add related projects here!