Почему VimClojure не устанавливает тип файла "clojure"
Я настроил Vundle для обработки своих пакетов в MacVim. Он правильно устанавливает тип файла для всех других моих файлов, например, ruby, perl и т. Д.
Тем не менее, он не устанавливает тип файла, когда я открываю.clj файл. Когда я бегу :set filetype?
он возвращается пустым. Итак, vim не распознает файлы clojure. Я могу :set filetype=clojure
и сразу получить завершение кода и подсветку синтаксиса; так что я знаю, что VimClojure работает правильно.
Как лучше всего это "отладить" или узнать, в чем проблема?
- MacVim v7.3
- OS X 10.6
Спасибо!
ОБНОВИТЬ
у меня уже есть filetype plugin indent on
и он работает для других пакетов (vim-ruby, vim-rails и т. д.), которыми управляет vundle. Просто не VimClojure.
5 ответов
Чтобы разрешить загрузку плагинов файловых типов, вам может понадобиться добавить это в свой .vimrc
:
filetype plugin on
Убедитесь, что вы инициализируете Vundle и ваши пакеты до остальной конфигурации в вашем vimr c. Так, например, вы должны иметь:
" =======================================================================
" Vundle setup and initialization. This needs to be done before any
" configuration so all plugins are loaded.
set nocompatible " required for Vundle
filetype off " required for Vundle, enabled later.
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
Bundle 'gmarik/vundle'
" Powerline
Bundle 'Lokaltog/vim-powerline'
...
... где Powerline - это просто пример пакета. Тогда оставьте свой конфиг...
" =======================================================================
" Actual vim configuration goes here.
" =======================================================================
syntax on "lots of syntax highlighting
set nocompatible "be iMproved
colorscheme mustang
filetype plugin indent on
...
Надеюсь, это поможет...
Убедитесь, что ваше расширение файла .clj, а не.clojure или.cloj
VimClojure устанавливает файл ftdetect/clojure.vim
, Я подозреваю, что это не подхватил Вим. Не знаю, где я, и я ничего не могу с этим поделать. Если vundle нуждается в некоторой инициализации в .vimrc
, вы должны проверить, что это происходит, перед тем, как напечатать тип файла.
У меня такая же проблема на Ubuntu. Это вызвано настройками vim системного уровня.
Вы можете с какими настройками vim системного уровня применять :scriptnames
, Если вы бежите redir @c | scriptnames | redir END | enew | put c
внутри vim вы получите буфер, содержащий все скрипты, созданные vim. Если вы игнорируете все ваши файлы (:g/\~/d
), вы можете увидеть все сценарии системного уровня.
Моя проблема была в самом первом файле: /usr/share/vim/vimrc
" Vim5 and later versions support syntax highlighting. Uncommenting the next
" line enables syntax highlighting by default.
if has("syntax")
syntax on
endif
Так как syntax on
появляется перед настройкой pathogen (мой менеджер плагинов vim), vim никогда не заглядывает в каталог bundle/vimclojure/ftdetect. Я думаю, у vundle будет такая же проблема для вас. (Попробуйте скопировать файл ftdetect/clojure.vim в ~/.vim/ftdetect/clojure.vim и посмотрите, не возникла ли еще проблема.)
Если у вас возникла та же проблема, у вас есть три возможных решения:
- Закомментируйте эти строки и отправьте сообщение об ошибке тому, кто владеет этим файлом (Apple или MacVim). Я предполагаю, что ваши файлы находятся в комплекте MacVim, так как я не помню, чтобы MacVim делал изменения на уровне системы.
- добавлять
filetype off
перед инициализацией vundle (вам может понадобитьсяsyntax off
тоже). Pathogen использует pathogen#infect() для этого, возможно, у vundle есть нечто подобное. ( Исправлена ошибка с патогеном.) Убедитесь, что вы снова включили их! (Также убедитесь, что ваши настройки vundle выполняются раньше, чем что-либо другое в вашем vimrc, относящееся к filetype/plugin/syntax.) - Создайте символические ссылки из файлов ftdetect для всех пакетов в ~/.vim/ftdetect (и удвоите autocmds, если ошибка когда-либо будет исправлена).