seoul256.vim: Low-Contrast Vim Colors for 256-Color Terminals
:deciduous_tree: Low-contrast Vim color scheme based on Seoul Colors
At a glance
- What is it?
- seoul256.vim is a Vim color scheme based on Seoul Colors, with dark and light variants for 256-color terminals and GVim. Its main trade-off is a deliberately low-contrast interface, while terminal and GUI color consistency may require an sRGB mapping adjustment.
- Who is it for?
- Adopt seoul256.vim if you want a muted Seoul Colors palette in Vim and can account for terminal-specific rendering. Do not choose it if you need high contrast or a documented release process.
- Can I use it commercially?
- Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
- Is it still maintained?
- Yes. The repository last received commits 100 days ago.
- What is it written in?
- Mainly Vim Script, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Why seoul256.vim Uses a Muted Vim Palette
seoul256.vim is a color scheme for Vim users who prefer a low-contrast interface. Its palette is based on Seoul Colors, the color reference published by the city of Seoul, rather than a conventional bright syntax palette. The README identifies both a dark scheme, `seoul256`, and a light scheme, `seoul256-light`. The supported target is a 256-color terminal or GVim.
The low-contrast choice is the project's defining behavior. Users who spend much of the day reading code may prefer fewer abrupt brightness changes between interface elements. The README does not publish contrast ratios, accessibility test results, or a minimum contrast requirement. It would therefore be inaccurate to claim that the scheme satisfies a named accessibility standard. Whether its palette suits a particular display remains a visual decision for the user.
The repository is focused on editor presentation rather than application development. Based on its top-level layout, the Vim implementation is under `colors/`, with related color assets and compatibility material in `iterm2/`, `kde/`, `lxterminal/`, `terminal-app/`, `urxvt/`, and `test/`. That structure indicates a small theme project with supporting assets for several rendering environments. The README also links to separately maintained themes for Emacs, kitty, Ghostty, Zed, and Zellij. Those links broaden the palette's availability, but they are not installation features of the Vim plugin itself.
The project is most relevant to people configuring Vim or GVim and selecting syntax colors by terminal index. It does not change Vim's editing model, parser, completion behavior, or plugin API. Its scope is deliberately narrow: define a Seoul Colors palette, offer dark and light variants, and account for differences between terminal and GUI rendering.
Dark, Light, and Background Switching in seoul256.vim
The README documents two separate scheme-loading commands. `colo seoul256` loads the dark version, while `colo seoul256-light` loads the light version. This distinction matters because the palette changes with the named scheme, not merely with a generic brightness preference.
Vim's `background` option can also switch versions when no custom background value is active:
" Unified color scheme (default: dark)
colo seoul256
" Light color scheme
colo seoul256-light
" Switch
set background=dark
set background=lightThe documented terminal-index ranges differ between the variants. For `seoul256`, the range is 233, described as the darkest value, through 239, described as the lightest value. Its default is 237. For `seoul256-light`, the range is 252 through 256, and the default is 253. These values are ANSI terminal color codes, not CSS color values or freely sampled RGB numbers.
A user can assign a different code through `g:seoul256_background`. The README states that seoul256.vim uses this value to choose the appropriate dark or light version. Once `g:seoul256_background` is set, `set background=dark` and `set background=light` will not switch versions. This precedence rule is the main configuration trap in the project: Vim's normal background option no longer acts as the sole switch.
The README also provides `g:seoul256_light_background` when both variants should have custom values. That arrangement allows dark and light selections to use different terminal indexes while still making explicit background configuration authoritative. Users who expect `set background=light` to load the light version after setting `g:seoul256_background` will get different behavior.
Installing seoul256.vim and Loading the First Scheme
The README says to use a favorite plugin manager, then gives a concrete vim-plug procedure. This route is suitable for readers who already manage Vim plugins with vim-plug. The first step is to add the repository to `.vimrc`:
Plug 'junegunn/seoul256.vim'After saving the configuration, enter Vim and run:
:PlugInstallThe repository name in that declaration matches the project's default branch layout, where the scheme sources are stored under `colors/`. Once vim-plug has installed the repository, the documented `colo` command can load a variant. The README does not give concrete installation steps for other plugin managers, so commands for Pathogen, vim-packages, or similar tools would need confirmation elsewhere.
Start with one of the two scheme names documented in the README:
" Unified color scheme (default: dark)
colo seoul256
" Light color scheme
colo seoul256-lightThe dark scheme is the unified scheme's default. The light variant has its own command. After loading, the interface should show the selected Seoul Colors treatment, although exact pixel values can differ between GUI and terminal environments. That difference is a documented consequence of how ANSI color codes are mapped, not necessarily an installation error.
If no custom background has been assigned, the README also permits switching through Vim's `background` option. If a custom `g:seoul256_background` has already been set, load the intended scheme explicitly and review the README's precedence rule before expecting `set background=dark/light` to change variants.
Linux Terminal Mapping Behind g:seoul256_srgb
seoul256.vim derives GUI RGB colors from the 256-color terminal codes used in its source code. It uses a lookup table for that conversion. According to the README, the default table contains RGB values corresponding to colors displayed by iTerm2 on macOS. Terminals on Linux, including urxvt and xfce4-terminal, may render the same ANSI codes differently.
The practical result is a documented possibility of visible color differences between a GUI and terminal Vim instance on Linux. This does not mean the syntax groups were selected differently. The distinction is in conversion from terminal color codes to GUI RGB values. A screenshot made in one environment may not serve as an exact visual reference for another.
For an alternative mapping, the README provides `g:seoul256_srgb`. The documented setting is:
let g:seoul256_srgb = 1When set to 1, the mapping is altered to suit the way urxvt and various other terminals render the colors. The stated goal is more uniform color between terminal and GUI versions on Linux. The README does not claim to detect every terminal automatically, and it does not provide a compatibility list beyond the named examples. Users should therefore treat this as an explicit mapping choice rather than a universal Linux setting.
Configuration order is worth considering. The sRGB example should be applied in the Vim configuration before loading the scheme so the mapping is present when colors are established. The README does not publish a reload procedure after changing this variable, so adding `let g:seoul256_srgb = 1` to `.vimrc` and starting a new Vim session is the clearest path supported by the documented setting.
Custom Background Codes and Plugin Color Variables
The default background code is selected by the scheme variant, but `g:seoul256_background` allows a different terminal index. The README gives the following choices for `seoul256`, with comments that record the accepted range and default:
" seoul256 (dark):
" Range: 233 (darkest) ~ 239 (lightest)
" Default: 237
let g:seoul256_background = 236
colo seoul256
" seoul256 (light):
" Range: 252 (darkest) ~ 256 (lightest)
" Default: 253
let g:seoul256_background = 256
colo seoul256These examples show separate configurations. They are not instructions to assign both values to the same variable in one configuration. For custom dark and light backgrounds that coexist, the README provides two variables:
let g:seoul256_background = 233
let g:seoul256_light_background = 256
colo seoul256
colo seoul256-lightThe scheme is then able to retain a custom value for each variant. As stated in the README, setting `g:seoul256_background` also changes the significance of `set background=dark/light`: those commands will not switch versions.
seoul256.vim exposes two additional global variables when it loads. `g:seoul256_current_fg` records the current foreground as an ANSI code, while `g:seoul256_current_bg` records the current background as an ANSI code. The README says these can be used to customize other plugins. It does not define updates after subsequent configuration changes, nor does it specify which color roles each current value represents beyond foreground and background. Plugin authors using those globals would need to inspect their behavior in their target Vim configurations.
License, Maintenance Signals, and Adoption Limits for seoul256.vim
The README lists seoul256.vim under an MIT license heading. That is the project's stated licensing information. This article does not interpret the license terms.
The repository is not archived, and its last push was on 2026-07-15. It has no GitHub releases. These facts establish the latest recorded push date and the absence of published GitHub releases. They do not establish a semantic-versioning policy, supported Vim or Neovim matrix, release cadence, or upgrade procedure. The README also does not document rollback or a migration process for configuration changes.
The absence of GitHub releases makes upgrade cost less predictable for users who value immutable package versions. A plugin manager can retrieve the repository, but the README does not provide a command for checking out a release, comparing versions, or rolling back. Changes to global variables such as `g:seoul256_background`, `g:seoul256_light_background`, and `g:seoul256_srgb` should therefore be reviewed before accepting an update.
seoul256.vim is a sensible fit for a Vim user who specifically wants a low-contrast Seoul Colors palette and is comfortable working with ANSI indexes. It is a poor fit for someone who requires documented contrast measurements, a high-contrast palette, automatic detection across arbitrary terminal emulators, or a formal release history. Before adoption, verify that vim-plug installs the repository, select an explicit variant, check the background precedence rule, and test the sRGB option in the terminal and GUI environments you actually use.
Editorial conclusion
Adopt seoul256.vim if you want a muted Seoul Colors palette in Vim and can account for terminal-specific rendering. Do not choose it if you need high contrast or a documented release process. Verify installation, background precedence, and `g:seoul256_srgb` behavior first. The README states an MIT license, the repository has no GitHub releases, and its last push was on 2026-07-15.
Frequently asked questions
How do I install seoul256.vim with vim-plug?
Add `Plug 'junegunn/seoul256.vim'` to `.vimrc`, then run `:PlugInstall` in Vim. The README provides vim-plug as its explicit installation example.
How do I switch between the dark and light seoul256.vim schemes?
Use `colo seoul256` for the dark scheme and `colo seoul256-light` for the light scheme. The README says `set background=dark` and `set background=light` can switch versions unless `g:seoul256_background` has been set.
Why do seoul256.vim colors differ between Linux terminals and GVim?
The default lookup table reflects colors displayed by iTerm2 on macOS, while terminals such as urxvt and xfce4-terminal may render the same ANSI codes differently. Setting `let g:seoul256_srgb = 1` changes the mapping to suit urxvt and various other terminals.
What license does seoul256.vim use?
The README lists MIT.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/junegunn-seoul256-vim)Was this useful?