Melt the butter in a large, shallow heavy-based frying pan (preferably non-stick). Add the onion and cook for 10 minutes, stirring frequently, until soft.
Tip the onion into a large bowl and mix with the potato and cabbage. Season. With lightly floured hands, shape the mixture into four rough cakes, each about 2 cm thick.
Wipe the pan clean with paper towels, then add the oil and heat. Fry the cakes over a moderate heat for about 15 minutes, turning once, until golden and crisp.
About 5 minutes before the end of cooking, prepare the poached eggs. Pour 4 cm of boiling water into a large, wide frying pan. Add the vinegar and bring to the boil. Reduce the heat to a gentle simmer. Crack an egg into a cup, then gently tip it into the water. Repeat with the remaining eggs.
Cook the eggs very gently for 1 minute, then gently spoon a little boiling water over the centre of each egg to cook the yolks. Poach for a further 2 minutes, then lift them out with a draining spoon, allowing the water to drain. Lay an egg on each bubble and squeak cake, then serve.
You could cook this the traditional way in one large cake. Serve cut into wedges with cold roast beef and lashings of gravy.