1

I just switched to iTerm2 on macOS and found some of its options go to Vim as well. That's the case for fonts, I was able to select a Vim font that I like from iTerm options.

It seems iTerm color options also apply to Vim highligh. But in this case highlight situation is not good enogh for my taste. So I tried to change:

:hi Comment ctermfg=gray 

Changes font color of comments.

I would like to change =, ::, +, - color, I think these are Operators, so I tried:

:hi Operator ctermfg=blue 

But it seems nothing changes. How should I do that?

If it matters I'm playing with .cpp/.h files.

1 Answer 1

4

It indeed looks like cppOperator links to Operator which links to Statement (-> :hi cppOperator), but I've never seen these operators displayed differently...

It's just for the keywords. See syn list cppOperator. I guess you'd have to add these symbols to the cppOperator list. You may need a syn match that takes care of not overlapping with cFloat and some other syntax groups. Indeed, if we look closely at $VIMRUNTIME/syntax/c.vim we see that cFloat can match + or - in the possible patterns.

Let's experiment on

42 + 12; 42 foobar 12; 
  1. :syn keyword cOperator + has no visible effect
  2. yet :syn keyword cOperator foobar has a visible effect => syn keyword is not what we're looking for
  3. however :syn match cOperator "+" has the effect we are looking for: now we have a match for +
  4. better yet, we can have :syn match cOperator "[+/*%^&|<>-]", we can observe:

    • there is no interaction with cFloat: check 12 * 1e-1 -- my fears were unfounded
    • pointers and addresses will also be highlighted -- excluding these cases will require more tweaking.

      void * p = &var; 12 * *p; 

Notes:

  • Before the modification, the operators belonged to cBlock, now they belong to cOperator. We can change the highlighting of Operator, it will now also affect these operators.
  • Put the new :syn... commands into {rtp}/syntax/c/c-highlight-operator.vim for instance. -- by {rtp}, understand any path in your 'rtp' option.
5
  • Why specifically mention cFloat? Commented Aug 7, 2018 at 12:09
  • If you look at cFloat pattern, you'll see that it can match + and - signs. Commented Aug 7, 2018 at 12:11
  • May I ask how to do that? I mean the syn match. Commented Aug 7, 2018 at 20:31
  • I tried hi cFloat ctermfg=blue but no changes so far, I was expecting something if it includes + and -. I guess I'm missing something Commented Aug 8, 2018 at 1:24
  • I've edited my answer Commented Aug 8, 2018 at 8:58

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.