Vim E194:Нет альтернативного имени файла, которое можно было бы заменить на '#'
Вопрос
Я использую плагин ctrlp.vim, который по сути является средством поиска файлов.Я выполнил шаги по установке, как указано здесь:
http://kien.github.io/ctrlp.vim/#installation (используя git)
Мой плагин работает нормально, как и ожидалось, но при запуске vim я получаю следующую ошибку:
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
При удалении set runtimepath^=~/.vim/bundle/ctrlp.vim
из моего vimrc ошибка исчезает, но, очевидно, даже мой плагин перестает работать, что нежелательно.
Пожалуйста, помогите.
Решение
Формат этой команды неверно: вместо
runtime autoload/ctrlp#utils#cachedir.vim
.
Это должно быть
runtime autoload/ctrlp/utils/cachedir.vim
.
Разделитель #
используется, когда вызывает функции autoLoad, но :runtime
требует пути, с отделениями путей.Там существуют специальные идентификаторы, такие как #
и %
, и это вызывает ошибку.
Чтобы исправить это, выясните из того, где выдается эта неправильная команда.
:verbose autocmd FuncUndefined
.
Хороший запуск.
Другие советы
У меня была такая же ошибка с Windows-версией GVim 8.1 при попытке написать [Без имени] буфер для имени файла, содержащего #include
.Размещение \
перед каждым #
в имени файла обходится проблема.
Я думал, что это будет противоречить соглашению Windows об использовании обратной косой черты для разделения папок в путях к файлам, но этого не произошло.