Set Colors in Vim


Here's are some methods on changing colors for the UI in Vim.

Color one-offs in .vimrc

Most of the colors you have will probably come from a theme. I've been using Dracula lately, and it's great.

But if you want to make one-off color adjustments yourself, you can stick those in your .vimrc file.

Highlight command

The highlight command, or hi for short, is the key to setting colors on things. You set highlights on groups, by group-name.

In .vimrc, you'd start with something like:

hi LineNr

Where LineNr is the group name to target. But the command is incomplete. There are no colors set yet. Let's set some foreground (fg) and background (bg) colors.

Color codes depend on Terminal or App

You can run vim in a few different ways. The most basic categories are to run vim through your terminal app (eg, zsh from iTerm) or through a standalone app (eg, macvim). You have to set colors for both.

hi LineNr ctermfg= ctermbg= guifg= guibg=

Usually you make cterm (for terminal) match gui (for standalone app) so that the colors are the same no matter how you run. But when you define the colors, the coding for each is different. What a pain!

Terminal colors are specified in a 256 ANSI color scheme. GUI colors are specified in my modern hex colors.

To finally finish the LineNr coloring, let's do a:

hi LineNr ctermfg=59 ctermbg=222 guifg=#ffb86c guibg=#282a36

There are other options you can learn in the help file via :h hi.

Reload using latest .vimrc

After you save, you can see the colors applied in the current editor without restarting vim, using:

:source ~/.vimrc

See current colors and things to color

If you want to learn the other color group names or see all the current color scheme, you can use the command:

:hi

The great thing is that the group-names that are standard to vim and those that your plugins add are all available to see here.

How else do you like to set colors in vim?