O vimscript é avaliado exatamente como os comandos Ex digitados na linha de comando : . Não havia variáveis em ex , então não há como especificá-las. Ao digitar um comando de forma interativa, você provavelmente usaria <C-R>= para inserir o conteúdo da variável:
:sleep <C-R>=timetowait<CR>m<CR>
... mas em um script, :execute deve ser usado. Todas as partes literais do comando Ex devem ser citadas (aspas simples ou duplas) e, em seguida, concatenadas com as variáveis:
execute 'sleep' timetowait . 'm'
No seu exemplo, você deseja colocar a variável i no comando :%s :
for i in range(1,40) | execute '%s/S' . i . 'Tg//gn' | endfor