I wish I could choose a language to preview the schemes with. My biggest gripe with many of these themes is that is looks great in some languages and terrible for everything else.
...and syntax file goes to colorize Something, but Else is perceived as common text.
I'm aware of limitations of vim, being text editor and not an IDE, but I'd rather syntax file to ignore the native API then to have me draw visual distinction between native and third-party classes when, effectively, I couldn't care less. The dissimilarity is just visual noise to me. :/
I agree many of the default Vim syntax highlighting files leave a lot to be desired. You can improve it though and Vim highlighting is actually very powerful. I use a C syntax highlighting improvement plugin to add (among other things) highlighting to operators and function names in calls[1].
You can also quite easily customise syntax highlighting by placing your own additional syntax file in .vim/after/syntax for a language. I use this to add some more custom keywords. You could quite easily add highlight support for ".Else" in an after/syntax file.
Why is something limited in highlighting because it's a text editor and not an IDE? Highlighting is about text so it's quite a core feature of an editor.
Usually because the text editor is limited to regular expression and region matching, while the IDE parses the language into an AST so it knows what each bit actually means.
What I meant was that the limitation in highlighting is usually due to the limitation in pattern matching. Of course, IDEs usually contain text editors, and they often do highlight using an AST. But that's expensive, both to develop and to run, and especially if you're not going to use the AST for any other IDE-like activity. Pattern-matching is cheap and usually good enough.
Okay, you are not talking about a problem in principle but how it practically is in reality. I don't know if text editors like Sublime/Atom also have that problem but when it comes to vim I can agree with that. Wouldn't wonder if there are some better external highlighters that can be integrated with vim. I heard that people use a vim plugin for using external linters for static analysis of code and spell checking.
And just to make sure, we agree that adding a feature like AST based highlighting wouldn't make an editor an IDE, right?
vim color schemes previewed in a variety of popular languages: https://code.google.com/p/vimcolorschemetest/ Just choose a language at the bottom of the page. Then wait... it takes a while to load the next page because its got a lot of html in many iframes
It occurs to me that the fewer lexical types a language has, the less possible it is to highlight it in a pleasant way. Lisps and Forths (and most assembly languages) must look unpleasantly spare; and an encoding like Urbit's Nock would be literally monochrome.
Sure, I use emacs prelude. I think you can get the same results here if you just use prelude + the amazing theme called moe. My emacs config (which is to be used inside/ontop of prelude) is at https://github.com/escherize/prelude-dotemacs
What bothers me isn't the isolated color scheme, but that without a ton of work (rolling it yourself?) the javascript in .js, .html, .erb, and any other file it might be in is highlighted completely differently.
You can actually do quite a bit to help with that by switching around which colors are assigned to which syntax rules, if you're willing to dive into the code.
This is unrelated, but in the first screenshot, how do you get a terminal windows inside vim ? ( git in the top right). I guess it is a neovim feature.
I find that theme very aesthetically pleasing, but I'm always having a hard time reading when the contrast between the text and background is so small compared to the theme vividchalk that I always fall back to.
Is this something you get used to, or is it a hopeless case for me to learn to use these beautiful themes?
Seconded. Tomorrow-Night is an amazing theme with several variants (blue, black, light...) and compatibility with everything. Even the Chrome Devtools.
I'm probably in the minority, but I've always found that anything other than constant-coloured text on a constant-coloured background with a high contrast to be more distracting than helpful.
One thing I like with syntax highlighting is when a string or other delimited expression hasn't been closed (e.g. as I'm writing it), the following code looks like it's part of the string or expression. It creates just the slightest tension in me: "close it ... close it ... close it ...
It's a similar feeling to when I haven't saved my editing in the last minute. :)
I find syntax highlighting is particularly useful in tightly-packed constructs. Consider this function returning a string interpolation in CoffeeScript:
(d) -> "id-#{d[@id]}"
In my default color scheme, the #{} (string interpolation), @ (this pointer), and () (function parameter delimiter) are muted, since they're syntactically critical but not helpful to my understanding.
The "id-" is more subtle than code but more visible than the muted syntax, because I only sometimes care about the string literal, and the array indexer [] is about the same.
The identifiers d and id are the regular typeface, since those are the code items.
The -> which creates a closure is brightest, because creating a closure is a relatively heavy operation and it's useful to be able to pick them out at a glance.
I understand that you CAN read it without highlighting, but the signal-to-noise ratio is much worse. In particular, the hash mark and atpersand stand out much too prominently.
The linked article is concerned about breaking up the "natural flow of the text", but I think that misses a critical observation. While prose text flows from left to right, line by line, that's not how code flows. Code's flow is in its structure.
I have colors switched off in most of my editors, but I have found that having a distinction between code and comments (particularly multi-line comments) helps to avoid confusion.
This is great. I'd like the ability to live-filter over and above the ability to search. Also, more than 10 hits per page. It'd be wonderful to have some sort of voting or popularity metric to sort by. And, for pie-in-the-sky features it would be nice to have filters based upon contrast / hues / etc. other than just "dark" and "light."
Can anyone recommend color schemes other than Solarized that have extensive support across board (not only vim, but all the plethora of terminal emulators, command-line applications, etc.)?
Solarized is too low-contrast for me, so I have hacked-on support for hybrid (solarized syntaxes + tommorow color codes), but it's not really uniform. And, imho, well-balanced contrast is the most important thing.
Non-exhaustive list of applications that I'd like to see supported - vim, emacs, tmux, weechat, vifm, newsbeuter, taskwarrior, mutt...
With Base16-Builder you can make a Yaml file of colours and it will build profiles for a zillion apps. It's pretty easy to hack to build other profiles as you just need to make an erb.
Base16 is organized in pretty much the same way as Solarized colours, so if you have gotten used to Solarized and just want to adjust the colours to something easier to see (I suffer from the same problem you do), then I think it is the way to go.
I hesitate to mention this because it isn't quite ready yet, but where I work we do a lot of remote pair programming over tmux. The problem is that everybody has their own idea of what colours look good. My buddy and I made a vim colorscheme that looks reasonable with many different palettes, called agnostic: https://github.com/ygt-mikekchar/agnostic
So if you ever need to pair program over tmux and one person wants a light background, but another person wants a dark backgroun, you can do it it. If you do that kind of thing a lot, then I recommend working with agnostic. Otherwise I think Base16 is probably the way to go.
I use hybrid in vim and base16 in everything else and that's about the best I've found so far. The base16 "builder" seems like it supports the most things:
I just use Base16 ( https://github.com/chriskempson/base16 ), so I have the same colorscheme in all relevant apps. It can emulate almost all of the popular schemes, plus has a lot of others.
I find myself often switching between dark/light colorschemes when I'm working inside/outside. However, this is a quite annoying task, I have to change the colorscheme of my terminal, and of Vim. Besides, I have multiple Vim sessions running in various tmux/terminal tabs, so when I switch to a different tab, I have to change the colorscheme of Vim again.
Then when I go inside/outside again I have to switch it all back. Quite a hassle. Has anyone found any trick to automate this? For starters I wouldn't know how to change the colorscheme of all my Vim sessions. Can you send a signal to your Vim sessions maybe? Then changing the terminal colorscheme is of course dependent on the terminal app you're using.
I’m just inverting the screen (built-in accessibility feature in OS X, there probably are alternatives on other platforms). Vim and the terminal are set to a light scheme, one of the standard ones. When I switch to terminal screen and it’s low light, I hit a key combo and it inverts everything. Does the job for me.
I do this, too, and it works very well. Specifically, almost everything on my screen is very light-colored (exception: when I am recreating rather than working) and then when I am working at night I use OS X to "invert" all the colors on the screen, with the result that the color 0x000000 becomes 0xFFFFFF, 0x000001 becomes 0xFFFFFE, etc.
If you have access to an OS X environment, you can try out "invert colors" at System Preferences > Accessibility > Display. iOS has it, too.
Yep! Also when I don’t want colored output (e.g. when working on familiar codebases or often in the shell), I turn on the Grayscale option in addition to inverted colors. That gives the screen cool retro-futuristic feel, and IMO makes it more aesthetically pleasing. Too bad a shortcut can’t be assigned to this one, but typing "pref access" in Spotlight gets the relevant settings page.
As a related tip, on iOS you can have a home button triple-press shortcut which you can assign inverted colors or grayscale, or both. Was stoked when discovered that.
Yup! I'm in the same boat as you - need to switch between light and dark theme due to the switch between outdoor/indoor. I run xterm in openbox, with specific placements (geometry setting) for a specific xterm window session. I ended up writing a script to place the xterm windows exactly where I want them so that I don't have to worry about restarting xterm windows and losing the spatial context. It's a hairy perl script that started life about 8 years ago I think. I have two openbox menu configured to start my xterm windows - one for black and one for white background. It also sets an environment variable there so that vim knows what colorscheme to use when it starts. So everytime I switch between indoor/outdoor I do a ":mksession!|quit", followed by alt+f4 to close the xterm window and then hit the openbox menu to reopen the just closed xterm window with the new background color, and resume my vim session with the color scheme adapted to the current background color. I bet using a modern IDE you can get this done with just one or two keystroke heh.
Nice to hear someone is having the same problem as me :). Your solution sounds nice, you still have to restart things but you kind of automated that part. Maybe I'll end up doing the same, for now I'll try to explore more possibilities. For example, `help remote.txt` could help.
Or rather, vim doesn't need to change its color scheme in order to be displayed in a completely different set of colors, which is what he's talking about. If you change the color mapping of your terminal and vim doesn't immediately reflect that, then your terminal is not applying those changes to that window/tab.
Fair enough, I just tried it out and it indeed works, I was a bit ignorant ;).
I'll see if this will work out for me. Don't know what any pitfalls could be by setting the color scheme in the terminal. At least it's annoying if you use different terminals on different systems, you'll have to configure them separately, you can't put it in your dotfiles repos or something. Thanks anyway, will look into it!
I keep my terminal's settings in my dotfiles repo... It opens by default in what I've set as the default. I can change on a case by case basis if I want.
So the Solarized home page starts off with this paragraph:
> Solarized is a sixteen color palette (eight monotones, eight accent colors) designed for use with terminal and gui applications. It has several unique properties. I designed this colorscheme with both precise CIELAB lightness relationships and a refined set of hues based on fixed color wheel relationships. It has been tested extensively in real world use on color calibrated displays (as well as uncalibrated/intentionally miscalibrated displays) and in a variety of lighting conditions.
I'm assuming this means it's giving a criterion to "measure" how good it is in a not-entirely-subjective-way. That always bothers me about selecting a theme. I have no idea if it's good or bad in any standard measurable way.
I look at these themes and can't really tell what it's "unique properties" or anything interesting about it just by looking at it.
First it was monokai then solarized; these days seti is pretty popular too.
No matter how advanced colour matching engineering was needed for solarized, there will always be a colour scheme that just looks more beautiful... in the eyes of the beholder :)
To me changing colour schemes is like changing your car - after a few years you feel it just does not shine like it used to, so you change it.
Very cool. I'd love to see the ability to tag and filter 256-color schemes, for `TERM="xterm-256color"`. And some ranking metric (e.g. stars on the GitHub repo) would help surface the good ones that a lot of people use.
WYSIWYG editors like Vivify (http://bytefluent.com/vivify/) are helpful too. The greatest challenge for me with making vim look nice is in harmonizing the vim color scheme with that of my guake terminal emulator. I wasted too much time trying to synchronize terminal colors with vim colors, eventually giving up.
When filtering by Light, some color schemes come through that are Dark. Is this a bug or do those color schemes have both light and dark versions? I looked at one of the dark "light" schemes and it didn't seem to have a light version on the github page.
When I was googling for Vim color schemes some time ago I've seen that webpage. It is really nice, I like that dark/light feature (but some themes were miscategorised as dark, at least when I last checked).
Can we do more than 10 per page? I hate having to click next, next, next in between scrolling. If I could just flick the scroll wheel and let my eyes pick out the ones I like it would be so much easier!
Thumbnails would be great. A gallery view of thumbnails, possibly accompanied by a palette of the main colors in the scheme, would greatly assist the browse-ability of the site.
unlike most of the people, I prefer light background instead of dark (black) background. anyone else feel the same? and most of the themes are with black background
Definitely possible - should be no more difficult than adding support for a different language. That said, I need to work through some other features first.