-
-
Save gosukiwi/161bb34a1841a047e095 to your computer and use it in GitHub Desktop.
RNB, a Vim colorscheme template
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<% | |
# RNB, A VIM COLORSCHEME TEMPLATE | |
# Author: Romain Lafourcade (https://github.com/romainl) | |
# Canonical URL: https://gist.github.com/romainl/5cd2f4ec222805f49eca | |
# This template is designed to help vimmers create their own colorschemes | |
# without much effort. | |
# | |
# You will need Ruby to generate your colorscheme but Ruby knowledge is | |
# not needed at all. | |
# | |
# The process is divided in four steps: | |
# 1. start by editing your colorscheme's information, | |
# 2. define your colors, | |
# 3. define your highlight groups and links, | |
# 4. and generate your colorscheme. | |
# Step 1: information | |
# | |
# Make sure the name of your colorscheme is unique and attractive. | |
# The description should fit in a single line with no linefeed. | |
# 'background' can be "light" or "dark". | |
information = { | |
author: "foo", | |
email: "[email protected]", | |
name: "bar", | |
description: "Lorem ipsum dolor sit amet.", | |
background: "light", | |
webpage: "http://www.example.com" | |
} | |
# Step 2: colors | |
# | |
# black = [ give each color a distinctive name | |
# "#000000", hexadecimal color for GVim/MacVim | |
# 0, integer between 0 and 255 for terminals supporting 256 colors | |
# "black" color name for color terminals, can be "darkred", "red", "darkgreen", | |
# "green", "darkyellow", "yellow", "darkblue", "blue", "darkmagenta", | |
# "magenta", "black", "darkgrey", "grey", "white" | |
# ] | |
# | |
# If your colors are defined correctly, the resulting colorscheme is guaranteed | |
# to work in GVim (Windows/Linux), MacVim, and any properly set up terminal emulator. | |
# | |
# The colors below are the first 16 colors of the xterm palette. They | |
# are only here as an example so you can get rid of them, I won't be mad. | |
black = ["#000000", 0, "black"] | |
darkred = ["#800000", 1, "darkred"] | |
darkgreen = ["#008000", 2, "darkgreen"] | |
darkyellow = ["#808000", 3, "darkyellow"] | |
darkblue = ["#000080", 4, "darkblue"] | |
darkmagenta = ["#800080", 5, "darkmagenta"] | |
darkcyan = ["#008080", 6, "darkcyan"] | |
gray = ["#c0c0c0", 7, "gray"] | |
darkgray = ["#808080", 8, "darkgray"] | |
red = ["#ff0000", 9, "red"] | |
green = ["#00ff00", 10, "green"] | |
yellow = ["#ffff00", 11, "yellow"] | |
blue = ["#0000ff", 12, "blue"] | |
magenta = ["#ff00ff", 13, "magenta"] | |
cyan = ["#00ffff", 14, "cyan"] | |
white = ["#ffffff", 15, "white"] | |
# Step 3: highlights | |
# | |
# You can define highlight groups like this: | |
# [ "Normal", name of the highlight group | |
# white, the color used for background color, or use "NONE", "fg" or "bg" | |
# darkgray, the color used for foreground color, or use "NONE", "fg" or "bg" | |
# "NONE" style, can be "bold", "underline", "reverse", "italic", | |
# "standout", "NONE" or "undercurl" | |
# ] | |
# | |
# or link an highlight group to another: | |
# [ "Title", "Normal" ] | |
# | |
# In GUI Vim, there is an additional color for the undercurl used to | |
# highlighting spelling mistakes: | |
# [ "SpellBad", name of the highlight group | |
# "NONE", the color used for background color, or use "NONE", "fg" or "bg" | |
# red, the color used for foreground color, or use "NONE", "fg" or "bg" | |
# "undercurl", style | |
# red color used for the undercurl | |
# ] | |
# | |
# The highlight groups below are fairly standard and should give you a | |
# working colorscheme. Some syntax scripts and plugins may define their own, though, | |
# so feel free to add them to this array as needed. | |
highlights = [ | |
[ "Normal", white, darkgray, "NONE" ], | |
[ "NonText", white, darkgray, "NONE" ], | |
[ "Comment", white, darkgray, "NONE" ], | |
[ "Constant", white, darkgray, "NONE" ], | |
[ "Error", white, darkgray, "NONE" ], | |
[ "Identifier", white, darkgray, "NONE" ], | |
[ "Ignore", white, darkgray, "NONE" ], | |
[ "PreProc", white, darkgray, "NONE" ], | |
[ "Special", white, darkgray, "NONE" ], | |
[ "Statement", white, darkgray, "NONE" ], | |
[ "String", white, darkgray, "NONE" ], | |
[ "Number", white, darkgray, "NONE" ], | |
[ "Todo", white, darkgray, "NONE" ], | |
[ "Type", white, darkgray, "NONE" ], | |
[ "Underlined", white, darkgray, "NONE" ], | |
[ "StatusLine", white, darkgray, "NONE" ], | |
[ "StatusLineNC", white, darkgray, "NONE" ], | |
[ "VertSplit", white, darkgray, "NONE" ], | |
[ "TabLine", white, darkgray, "NONE" ], | |
[ "TabLineFill", white, darkgray, "NONE" ], | |
[ "TabLineSel", white, darkgray, "NONE" ], | |
[ "Title", white, darkgray, "NONE" ], | |
[ "CursorLine", white, darkgray, "NONE" ], | |
[ "LineNr", white, darkgray, "NONE" ], | |
[ "CursorLineNr", white, darkgray, "NONE" ], | |
[ "helpLeadBlank", white, darkgray, "NONE" ], | |
[ "helpNormal", white, darkgray, "NONE" ], | |
[ "Visual", white, darkgray, "NONE" ], | |
[ "VisualNOS", white, darkgray, "NONE" ], | |
[ "Pmenu", white, darkgray, "NONE" ], | |
[ "PmenuSbar", white, darkgray, "NONE" ], | |
[ "PmenuSel", white, darkgray, "NONE" ], | |
[ "PmenuThumb", white, darkgray, "NONE" ], | |
[ "FoldColumn", white, darkgray, "NONE" ], | |
[ "Folded", white, darkgray, "NONE" ], | |
[ "WildMenu", white, darkgray, "NONE" ], | |
[ "SpecialKey", white, darkgray, "NONE" ], | |
[ "DiffAdd", white, darkgray, "NONE" ], | |
[ "DiffChange", white, darkgray, "NONE" ], | |
[ "DiffDelete", white, darkgray, "NONE" ], | |
[ "DiffText", white, darkgray, "NONE" ], | |
[ "IncSearch", white, darkgray, "NONE" ], | |
[ "Search", white, darkgray, "NONE" ], | |
[ "Directory", white, darkgray, "NONE" ], | |
[ "MatchParen", white, darkgray, "NONE" ], | |
[ "SpellBad", white, darkgray, "NONE", red ], | |
[ "SpellCap", white, darkgray, "NONE", blue ], | |
[ "SpellLocal", white, darkgray, "NONE", magenta ], | |
[ "SpellRare", white, darkgray, "NONE", cyan ], | |
[ "ColorColumn", white, darkgray, "NONE" ], | |
[ "signColumn", white, darkgray, "NONE" ], | |
[ "ErrorMsg", white, darkgray, "NONE" ], | |
[ "ModeMsg", white, darkgray, "NONE" ], | |
[ "MoreMsg", white, darkgray, "NONE" ], | |
[ "Question", white, darkgray, "NONE" ], | |
[ "WarningMsg", white, darkgray, "NONE" ], | |
[ "Cursor", white, darkgray, "NONE" ], | |
[ "CursorColumn", white, darkgray, "NONE" ] | |
] | |
# Step 4: generation | |
# | |
# From a separate shell: | |
# $ erb -T - bar.erb > bar.vim | |
# | |
# From Vim: | |
# :!erb -T - % > %:r.vim | |
# These online resources can help you design your colorscheme: | |
# * http://upload.wikimedia.org/wikipedia/en/1/15/Xterm_256color_chart.svg | |
# the xterm palette | |
# * http://whatcolor.herokuapp.com/ | |
# play with hexadecimal colors right in the address bar (currently down) | |
# * http://color.hailpixel.com/ | |
# similar concept, fuzzier implementation | |
# * http://colourco.de/ | |
# similar concept, fancier implementation | |
# * http://www.colr.org/ | |
# extract a palette from an image | |
# * http://colores.manugarri.com/ | |
# search for 'word', get images and color palettes | |
# * http://www.colourlovers.com/palettes | |
# user-created palettes | |
# * http://www.perbang.dk/color+scheme/ | |
# a no-nonsense colorscheme generator | |
# * https://color.adobe.com/ | |
# Adobe's fancy colorscheme generator | |
# * http://paletton.com/ | |
# The classic 'Color Scheme Designer', rebranded | |
# A few general advices: | |
# * The Windows console is limited to the 16 "ANSI" colors but it has a few of | |
# them interverted which makes numbers impractical. Use color names instead: | |
# :help cterm-colors | |
# * The Windows console (yeah…) doesn't do italics, underlines or bolded text; | |
# it is limited to normal and reverse. Keep that in mind if you want | |
# your colorscheme to be usable in as many environments as possible by as many | |
# people as possible. | |
# * All of the terminal emulators in use these days allow their users to | |
# change the 16 so-called "ANSI" colors. It is also possible on some platforms | |
# to change some or all of the 256 colors in the xterm palette. Don't take | |
# anything for granted. | |
# * When used against a light background, strong colors work better than muted | |
# ones. Light or dark does'nt really matters. Also, it is harder to discriminate | |
# between two similar colors on a light background. | |
# * Both stong and muted colors work well against a dark background. It is also | |
# easier to work with similar colors, but dark colors don't work at all. | |
# * Use as many text samples as possible. String-heavy languages may look completely | |
# different than keyword-heavy ones. This can have an impact on the usability | |
# of your colorscheme. | |
# * Most terminal emulators and terminal multiplexers currently in use on unix-like | |
# systems support 256 color but they almost always default to a '$TERM' that tells | |
# Vim otherwise. Your users will need to make sure their terminal emulator/multiplexer | |
# is correctly set up if they want to enjoy the best possible experience. | |
# Many thanks to Barry Arthur (https://github.com/dahu) for the original idea. | |
# You don't need to edit anything beyond this line. | |
-%> | |
" <%= information[:name] %>.vim -- Vim color scheme. | |
" Author: <%= information[:author] %> (<%= information[:email] %>) | |
" Webpage: <%= information[:webpage] %> | |
" Description: <%= information[:description] %> | |
hi clear | |
if exists("syntax_on") | |
syntax reset | |
endif | |
let colors_name = "<%= information[:name] %>" | |
if &t_Co >= 256 || has("gui_running") | |
<% for highlight in highlights -%> | |
<% if highlight.length == 2 -%> | |
hi link <%= highlight[0] %> <%= highlight[1] %> | |
<% elsif highlight.length == 4 -%> | |
hi <%= highlight[0] %> ctermbg=<%= highlight[1].kind_of?(String) ? highlight[1] : highlight[1][1] %> ctermfg=<%= highlight[2].kind_of?(String) ? highlight[2] : highlight[2][1] %> cterm=<%= highlight[3] %> guibg=<%= highlight[1].kind_of?(String) ? highlight[1] : highlight[1][0] %> guifg=<%= highlight[2].kind_of?(String) ? highlight[2] : highlight[2][0] %> gui=<%= highlight[3] %> | |
<% if highlight[0] == "Normal" -%> | |
set background=<%= information[:background] %> | |
<% end -%> | |
<% else -%> | |
hi <%= highlight[0] %> ctermbg=<%= highlight[1].kind_of?(String) ? highlight[1] : highlight[1][1] %> ctermfg=<%= highlight[2].kind_of?(String) ? highlight[2] : highlight[2][1] %> cterm=<%= highlight[3] %> guibg=<%= highlight[1].kind_of?(String) ? highlight[1] : highlight[1][0] %> guifg=<%= highlight[2].kind_of?(String) ? highlight[2] : highlight[2][0] %> gui=<%= highlight[3] %> guisp=<%= highlight[4].kind_of?(String) ? highlight[4] : highlight[4][0] %> | |
<% end -%> | |
<% end -%> | |
elseif &t_Co == 8 || $TERM !~# '^linux' || &t_Co == 16 | |
set t_Co=16 | |
<% for highlight in highlights -%> | |
<% if highlight.length == 2 -%> | |
hi link <%= highlight[0] %> <%= highlight[1] %> | |
<% else -%> | |
hi <%= highlight[0] %> ctermbg=<%= highlight[1].kind_of?(String) ? highlight[1] : highlight[1][2] %> ctermfg=<%= highlight[2].kind_of?(String) ? highlight[2] : highlight[2][2] %> cterm=<%= highlight[3] %> | |
<% if highlight[0] == "Normal" -%> | |
set background=<%= information[:background] %> | |
<% end -%> | |
<% end -%> | |
<% end -%> | |
endif | |
" Generated with RNB (https://gist.github.com/romainl/5cd2f4ec222805f49eca) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment