Vim E194:Nenhum nome de arquivo alternativo para substituir o '#'
Pergunta
Eu estou usando ctrlp.vim plugin, que é essencialmente um arquivo do finder.Eu segui os passos de instalação, como mencionado aqui:
http://kien.github.io/ctrlp.vim/#installation (usando git)
Meu plugin está funcionando bem e, como esperado, mas no início eu vim obter o seguinte erro:
Error detected while processing FuncUndefined Auto commands for "*":
E194: No alternate file name to substitute for '#': runtime autoload/ctrlp#utils#cachedir.vim
Press ENTER or type command to continue
Sobre a remoção set runtimepath^=~/.vim/bundle/ctrlp.vim
a partir do meu vimrc o erro desaparece, mas, obviamente, até o meu plugin pára de funcionar o que não é desejado.
Por favor, ajuda.
Solução
O formato do comando é errado:Em vez de
runtime autoload/ctrlp#utils#cachedir.vim
ele deve ser
runtime autoload/ctrlp/utils/cachedir.vim
O #
o separador é usado quando chamar autoload funções, mas :runtime
requer um caminho, com separadores de caminho.De lá, os identificadores especiais, tais como #
e %
estão em vigor, e que faz com que o erro.
Para corrigir isso, descobrir de onde esta errado comando é emitido.
:verbose autocmd FuncUndefined
é um bom começo.
Outras dicas
Eu tive o mesmo erro com a versão do Windows do GVim 8.1, ao tentar gravar um [Sem Nome] buffer para um nome de arquivo contendo #include
.A colocação de um \
antes de cada #
o nome do arquivo de obras em torno do problema.
Eu pensei que ele iria entrar em conflito com o Windows convenção do uso de barras invertidas para pastas separadas em caminhos de arquivo, mas ele não o fez.