Você pode fazer isso da seguinte maneira com Perl
:
perl -lpe 's|\index\{\K.*?(?=\})|join "!", reverse split "!", $&|eg'
Breve explicação:
- selecione em colchetes de captura a parte à esquerda de quais mentiras
\index{
e o fechamento mais próximo}
à direita. - dividir em bang, reorganizar as partes divididas e reingressar com estrondo.
- repita isso na linha quantas vezes esse combo for encontrado.