I think the simplest `:substitute` command might be to use lookarounds:

    :%s/<\@<!<<\@!/"/g

This replaces every single `<` character that is neither preceded nor followed by a `<` character.

It uses a `:substitute` command (See `:help :substitute`) to replace strings that match the regular expression `<\@<!<<\@!` with `"` characters.

The regular expression is reasonably simple when broken down. It consists of three parts:

    :%s/<\@<!<<\@!/"/g
             ^
             1

In the middle is a single `<` character. This is what we want to match.


    :%s/<\@<!<<\@!/"/g
        ^^^^^
          2

Before that is: `<\@<!`. This is a second `<` character followed by Vim's atom for negative lookbehind: `\@<!`, which means that the following will only be matched if we *didn't* match a `<` here.

    :%s/<\@<!<<\@!/"/g
              ^^^^
                3

At the end we have: `<\@!`. This is a third `<`, this time followed by Vim's atom for negative lookahead: `\@!`, which means that the preceding will only be matched if what follows is *not* a `<`.

See `:help \@!` and `:help \@<!` for more details of Vim's negative lookaround atoms.