Как создать файл с расширением .pt, с выделением синтаксиса xml и загрузкой pt.snippets плагина vim.

У меня в .vimrc есть следующее:

au BufNewFile,BufRead *.pt set filetype=xml

Это необходимо, потому что, хотя я редактирую файл с расширением *.pt, это действительно действительный файл xml: установив такой тип файла, я могу выделить подсветку синтаксиса.

Я использую плагин snipmate vim и пытался создать pt. фрагменты для конкретных нужд, поскольку эти файлы являются шаблонами страниц Zope (ZPT с TAL).

Теперь у меня проблема: я не хочу создавать эти сниппеты в xml.snippets, поскольку они на самом деле не являются общими фрагментами xml, но мои *.pt файлы имеют значение xml, поэтому, когда я определяю свои фрагменты pt, они не t загружается, если я не запустил :set filetype=pt в моем pt-файле на vim - но тогда я теряю подсветку синтаксиса.

Я хотел бы иметь файл pt с подсветкой синтаксиса xml, чтобы иметь возможность загружать файл pt.snippets из snipmate. Как мне это сделать?

(Я бы не хотел помещать свои фрагменты в общий файл фрагментов, я бы хотел, чтобы они присутствовали только в pt.snippets, чтобы их было легче поддерживать.)


person Somebody still uses you MS-DOS    schedule 08.06.2010    source источник


Ответы (3)


Snipmate позволяет использовать синтаксис типа файла с точками, попробуйте:

au BufNewFile, BufRead * .pt установить filetype = xml.pt

person jinfield    schedule 09.06.2010

синтаксис печально известен из-за нежелания поддерживать два одновременных типа файлов (на самом деле, вчера кто-то задал тот же вопрос)

au BufRead *.pt set filetype=xml.pt
au BufNewFile *.pt set filetype=xml.pt

Ответ jinfield на самом деле точен, но у меня был сбой синтаксиса запятой в некоторых версиях vim

person sleepynate    schedule 12.06.2010
comment
sleepynate, спасибо за ответ. Как ни странно, ответ jinfields работает !! Не знаю, почему этого не было раньше, я думаю, что сделал что-то не так ... в любом случае спасибо за ваше предложение по синтаксису запятой. - person Somebody still uses you MS-DOS; 14.06.2010
comment
Да нет проблем. У меня была такая же проблема с его ошибкой, когда я хотел использовать фрагменты php и html в шаблонах CakePHP. - person sleepynate; 14.06.2010

Как насчет?:

autocmd BufNewFile,BufRead *.pt setlocal filetype=pt
autocmd BufNewFile,BufRead *.pt setlocal syntax=xml
person Curt Nelson    schedule 08.06.2010
comment
setlocal не работает, но выполнение autocmd BufNewFile, BufRead * .pt set filetype = pt работает. Вы можете объяснить почему? - person Somebody still uses you MS-DOS; 09.06.2010
comment
Я не уверен, почему это не работает для вас. Вышеупомянутые autocmd вместе с очень простым pt.snippets, похоже, работают для меня (Vim 7.2, snipMate 0.83). Если вы запустите приведенные выше команды (только часть setlocal ...) вручную, будет ли это работать должным образом? - person Curt Nelson; 09.06.2010
comment
Да, работает ... но, как ни странно, у меня есть цветовая схема с названием molokai. Когда я запускаю первую команду (filetype = pt), она теряет цветовую схему. Когда я запускаю syntax = xml, он восстанавливает цветовую схему, но вместо молокаи, я думаю, он получает стандартный синтаксис vim xml. - person Somebody still uses you MS-DOS; 11.06.2010