Согласно принятому ответу на этот вопрос , я пытаюсь использовать modelines в vim для принудительного определения типа файла в некоторых файлах.
Например, в верхней части файла с именем gitconfig
(обратите внимание, нет начального .
), у меня есть следующая строка:
# vim: set filetype=gitconfig :
modeline
включен в моей системе. Однако когда я открываю файл в vim, set filetype?
возвращается conf
, а не ожидаемый gitconfig
.
Возможно ли, что другие части моей конфигурации vim (например, filetype.vim) вызывают это странное поведение?
Отредактировано в ответ на комментарии:
set compatible?
возвращается nocompatible
set modeline?
возвращается modeline
verbose set filetype?
возвращает:
filetype=conf
Last set from /usr/share/vim/vim73/filetype.vim
Я не понимаю, почему общесистемный плагин filetype переопределяет то, что я установил в самом файле.
Последнее замечание: это версия Vim 7.3, поставляемая с OSX.
Последняя версия MacVim, работающая в той же системе с использованием того же .vimrc
поведения, что и ожидалось, с set ft?
возвратом filetype=gitconfig
.
set modeline?
не печатаетnomodeline
?compatible
установлено. Это тоже стоит проверить.Ответы:
Таким образом, после некоторого копания выясняется, что система,
vimrc
поставляемая с OSX, устанавливаетmodelines
для переменной (обратите внимание на конечные 's') значение 0. Эта переменная контролирует количество строк в файле, которые проверяются на наличие команд set. Установка Modelines к ненулевому значению в моей.vimrc
решил проблему.Полный вывод, для любопытных: вывод
vim --version
побудил меня проверить систему vimrc:Глядя на систему vimrc:
Привел меня к
modelines
переменной. Похоже, что MacVim не получает этот системный файл (возможно, ищет системный GVIMRC вместо этого:help startup
- не ясно).источник
Чтобы это работало в моей системе MacOS, мне нужно было определить пару параметров в ~ / .vimrc:
Где ' modeline ' разрешает использование настроек в файле, а ' modelines = # ' устанавливает количество строк, которые vim / vi будет проверять на команды set.
После того, как эти параметры были установлены, я смог использовать синтаксис, как показано ниже в моих файлах, для переопределения установленных параметров.
источник