simont
simont

Reputation: 72527

Set Vim bracket highlighting colors

I'm using :set showmatch to highlight the matching bracket or brace when the cursor is over one.

I'd like to change the highlight-color so that it's radically different from the cursor color, because I've got the situation shown in the screenshots.

When the cursor is over the second brace:

Cursor over the second brace

And when the cursor is to the immediate-right of the brace:

Cursor to the right

This uses my terminal color scheme, which is taken from Solarized. Unfortunately, it's a bit of a pain to see which highlight is the brace matching and which is the cursor, when the braces are close together.

Is there a Vim setting I can use to change the color of that to, say, the bold magenta ANSI? I'm not particularly interested in remapping my ANSI colors within the terminal or shell - I'd like a Vim-specific option, if it exists.

Upvotes: 104

Views: 40750

Answers (4)

7stud
7stud

Reputation: 48589

I'm using the vividchalk color scheme with macvim, and none of the various solutions I tried worked for me. But I searched the file:

~/.vim/colors/vividchalk.vim

for MatchParen and I found this line:

call s:hibg("MatchParen","#1100AA","DarkBlue",18)

I commented out that line, then I copied that line, and I changed it to:

 call s:hibg("MatchParen","#FF0000","Red",18)

which succeeded in highlighting the matching parenthesis in red, which is a LOT easier to see. I hope that helps someone else.

If you want to briefly jump to the opening bracket/paren/brace when you type the closing bracket/paren/brace, then adding:

set showmatch

to ~/.vimrc worked for me.

A very handy trick is setting the cursor on a bracket/paren/brace and then typing % to jump to the matching bracket/paren/brace. That is especially useful when the matching bracket/paren/brace has scrolled off the page. Typing % a second time will jump back to where you came from.

Upvotes: 8

Alexx Roche
Alexx Roche

Reputation: 3249

The colours that I use for Vim highlighting (from my ~/.vimrc file):

" set sensible highlight matches that don't obscure the text
:highlight MatchParen cterm=underline ctermbg=black ctermfg=NONE
:highlight MatchParen gui=underline guibg=black guifg=NONE

NONE uses the character colour from the :colourscheme ron (or whichever you prefer from :!ls $VIMRUNTIME/colors).

Upvotes: 6

dobhareach
dobhareach

Reputation: 344

Try :!ls $VIMRUNTIME/colors. These are default color schemes Vim supply.

Then change color scheme :colorscheme name, find the color scheme that you like and copy the color scheme: :!cp $VIMRUNTIME/colors/<name>.vim ~/.vim/colors/new_name.vim

Edit it and set with the color scheme command or better add colorscheme name to the .vimrc file. After changes to color file:colorscheme name, reload Vim's colors.

It's handy to use :vsp in create a vertical split in Vim. Edit the colors file in one half, and check changes in other. I used nye17's answer and added the hi MatchParen line to my color_file.vim. It works just fine.

Links:

Upvotes: 5

nye17
nye17

Reputation: 13347

You can change the colors to, e.g., blue over green:

hi MatchParen cterm=none ctermbg=green ctermfg=blue

Just put it in your .vimrc file.

Basically, cterm determines the style, which can be none, underline or bold, while ctermbg and ctermfg are, as their names suggest, background and foreground colors, so change them as you see fit.

For your case, you may want

hi MatchParen cterm=bold ctermbg=none ctermfg=magenta

Upvotes: 134

Related Questions