Почему vim выделяет этот файл по-другому? - PullRequest
4 голосов
/ 01 февраля 2012

Примечание

Я использую локальный плагин vim, который позволяет мне использовать проектный файл .vimrc, в целом он работает нормально и, как и следовало ожидать.

Фон

Я работаю с Silverstripe, и поэтому должен работать с шаблонами Silverstripe, которые являются * .ss файлами, однако по умолчанию vim назначает * .ss файлам схемы. Теперь я использую Silverstripe только для одного проекта и использую html-тип файла, установленный в моем проекте .vimrc для подсветки, однако, обнаружив несколько ошибок, я решил добавить подсветку для файлов * .ss в htmlss. VIM-файл (используя html.vim в качестве основы, я просто добавил шаблон правил в конце). После небольшого количества проб и ошибок я заставил это работать и выделение должным образом, однако я столкнулся со странной ошибкой ...

Вопрос

Использование этого проекта .vimrc:

augroup filetypedetect
    autocmd! * *.ss
    autocmd! BufEnter *.ss setf htmlss
augroup END

Однако все работает нормально, используя этот .vimrc:

augroup filetypedetect
    autocmd! * *.ss
    autocmd! BufEnter,BufRead,BufNewFile *.ss setf htmlss
augroup END

Сбой подсветки синтаксиса, он правильно устанавливает тип файла, но подсветка идет не так, как надо.

Полагаю, я хочу знать, почему работает версия 1, а версия 2 - нет, несмотря на то, что ничего не меняется.

добавление

После небольшого исследования я обнаружил, что удаление autocmd! * *.ss делает второе действие, только если я удаляю ! из autocmd! BufEnter,BufRead,BufNewFile *.ss setf htmlss. т.е.

augroup filetypedetect
    autocmd BufEnter,BufRead,BufNewFile *.ss setf htmlss
augroup END

работает, но

augroup filetypedetect
    autocmd! BufEnter,BufRead,BufNewFile *.ss setf htmlss
augroup END

и

augroup filetypedetect
    autocmd! * *.ss
    autocmd BufEnter,BufRead,BufNewFile *.ss setf htmlss
augroup END

нет.

Опять же, мой вопрос: почему эти различия возникают, у меня сейчас есть рабочая реализация, поэтому я не заинтересован ни в каком расследовании. Я не хочу решений, так как у меня нет проблем.

1 Ответ

2 голосов
/ 09 мая 2012

Это, вероятно, вызвано конфликтом вашего синтаксического файла с самим собой при многократном применении.Одна из первых строк в файле синтаксиса, вероятно, syntax enable, что включает синтаксис без изменения каких-либо текущих настроек выделения.По документам :

The ":syntax enable" command will keep your current color settings.  This
allows using ":highlight" commands to set your preferred colors before or
after using this command.  If you want Vim to overrule your settings with the
defaults, use:
        :syntax on

Таким образом, адекватным «решением» должно быть изменение syntax enable на syntax on в файле синтаксиса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...