Respostas:
Dessa forma, printfespera que um número decimal seja convertido em um hexadecimal. Tudo o que você precisa fazer é converter o caractere em um número da seguinte maneira:
s/\([a-z]\)/\=printf("%#02x", char2nr(submatch(0)))/
Veja :help char2nr()para detalhes.