Vinegar worked on a lot of organic dyes. It does not work to set modern chemical dyes.
Often at least some of the dye that comes out of a fabric is not due to the dye not being set properly, but rather to the fabric being over-saturated with dye that is then not completely rinsed out of the fabric. There is a difference between getting rid of excess dye in a fabric (there is a limit to how much dye fibers can absorb; excess dye sits on the surface of the fibers) and permanently setting dye particles in a fabric. The former can be taken care of with one or two washings. The latter will continue to bleed no matter how many times the fabric is washed.