O que você precisa é de uma expressão regular que começa com 51 e seu terceiro charactar pode ser qualquer 1,2 ou 4. Então você quer substituir a string que combina com a expressão regular desta forma: o primeiro para caracteres de 21 e o terceiro deve ser qualquer caractere que corresponda ao terceiro caractere especificado pela expressão regular (ou seja: sem alteração).
%s/51\([124]\)/21/g
Aqui [124] significa qualquer 1,2 ou 4 e \ ([124] \) significa "vamos lembrar o caractere que combinou [124]". Na string de substituição, \ 1 significa "o caractere que lembramos como a primeira substring lembrada" (para ser mais específico: a substring que correspondeu à parte da expressão regular entre o primeiro par \ (\)).