Есть ли способ поместить комментарий в файл, который vim будет обрабатывать, чтобы установить тип файла?

30

Например, если я хочу, чтобы vim распознал файл с именем gitconfig(без начального .) filetype=gitconfig, есть ли способ указать это в комментарии или что-то подобное в самом файле? Обратите внимание, я хочу, чтобы это работало в разных системах, поэтому изменение файлов запуска vim не является предпочтительным.

Мурали Суриар
источник

Ответы:

45

Это похоже на modelineфункцию (см. Онлайн-справку). В gitconfig у вас может быть моделин, подобный следующему, в начале или конце файла:

# vi: ft=gitconfig

Это требует, чтобы модели были включены, и, поскольку они могут представлять угрозу безопасности, они по умолчанию отключены во многих системах.

Другой подход, который может быть немного больше работы, заключается в создании .vimфайла, содержащего

au BufRead,BufNewFile */gitconfig setfiletype gitconfig

и вставьте его во ~/.vim/ftdetectвсе ваши системы.

jw013
источник
Идеально, моделин - это то, что я искал. modeline включен, но, похоже, что-то еще в моих настройках мешает ему. Если я добавлю предложенную вами строку вверху файла, то после повторного открытия она set filetype?покажет тип файла 'conf'.
Мурали Суриар
Может быть, вы можете использовать, :verbose set filetypeчтобы увидеть, откуда confберется это значение - я бы предположил, что системные настройки по умолчанию для файлового типа vim где-то есть.
jw013
очевидно, это был последний набор из /usr/share/vim/vim73/filetype.vim. Почему обнаружение типов файлов системного уровня переопределяет директиву, которую я поместил в сам файл?
Мурали Суриар
ты запускал vim как root? если да, я думаю, что моделин не будет загружаться.
Элиас
Также проверьте значение modelinesопции. :set modelines?Если он установлен на ноль, он не будет обрабатывать моделину.
Кристиан Лонг,
1

Вы можете создать файл синтаксиса и поместить его в share/syntaxкаталог vim (в Debian Lenny это /usr/share/vim/vim71/syntax(ваш дистрибутив может отличаться)).

Документация по формату синтаксиса Vim находится здесь: http://vimdoc.sourceforge.net/htmldoc/syntax.html

Вы можете где-нибудь найти готовый файл синтаксиса в Интернете, но я оставлю это как упражнение для вас.

bahamat
источник