Your son is eating when he is hungry. As long as you have healthy food available for him to eat, he will be fine. No he does not need vitamins since you already serve healthy foods.
Some kids will never eat much. Some children like to eat lots of little meals. Some kids go through growing spurts when they will want to eat everything in sight. Do not make a big deal out of it.
I have learned to add (hide) shredded carrots, zucchini, and yellow squash to all types of foods for extra nutrition. My husband and child never noticed a difference. Add it to stews, spaghetti sauce, chili, casseroles. When I make soups, I put all types of veggies in there. My daughter would not always eat every veggie, but I figured long as she tried them, that was good enough.
I was surprised when she was in daycare that she would eat everything they fed them beets, lima beans, cauliflower. The teacher says it is because all of the other kids eat it. I would look at their menus and then I would introduce those same foods at home that next week. We never made a big deal out of it and she would eat it just fine.
When your son gets older, you can introduce him to be being a "Brave Taster". Tell him if he will take 2 bites of new food and actually eat them, he is allowed to put a sticker on a chart. Once he collects a certain amount, he will be allowed to have a special event. We would offer our daughter a chance to rent a video on any day of the week.
Hang in there, you are doing a good job, he probably is just not a big eater. Wait till he is a teenager and eats everything in the fridge in one day! You will laugh when you look back on this.