A conclusão do comando por padrão não é reconhecida nos mapeamentos (e gravada em macros). Você pode definir uma chave alternativa na opção 'wildcharm'
obscura e usá-la. No entanto, a inserção do nome do arquivo atual pode ser feita de maneira mais fácil e direta. Em vez de preencher %
, basta inserir uma expressão Vimscript equivalente via <C-r>
:
:nnoremap -g :!rspec <C-r>=expand('%')<cr><cr>
PS: Para lidar adequadamente com todos tipos de nomes de arquivos, use adicionalmente shellescape()
:
:nnoremap -g :!rspec <C-r>=shellescape(expand('%'), 1)<cr><cr>
PPS: Espero que você não esteja digitando manualmente no mapeamento todas as vezes, mas use um plug-in de tipo de arquivo ou :autocmd
para definir isso automaticamente para os buffers de teste. Eu recomendaria definitivamente automatizá-lo dessa maneira.