As regras de avaliação do Vim não são como as encontradas nas linguagens de programação comuns. A maioria dos Ex-comandos não aceita variáveis, mas espera valores literais. Isso torna mais conveniente a emissão interativa dos comandos: nenhuma citação de seqüência de caracteres é necessária.
No Vimscript, como você já descobriu corretamente, você precisa usar :execute
para obter as variáveis do Vimscript avaliadas no comando. Ele avalia todos os seus argumentos e, em seguida, executa a seqüência resultante como um comando Ex. Se a concatenação de strings é muito desajeitada, você também pode usar printf()
para colocar o conteúdo da variável no comando.