Вот Vim скрипт
www.vim.org/scripts/script.php?script_id=830 который это делает. Добавил его в папку syntax, добавил нужные строки в filetype.vim:
au BufNewFile,BufRead *.tt2 call s:AdjustTT2Type()
func! s:AdjustTT2Type()
if ( getline(1) . getline(2) . getline(3) =~ '<\chtml'
&& getline(1) . getline(2) . getline(3) !~ '<[%?]' )
|| getline(1) =~ '<!DOCTYPE HTML'
setf tt2html
else
setf tt2
endif
endfunc
To define START_TAG and END_TAG you like, you can set any pair of tags to 'b:tt2_syn_tags':
"ASP"
:let b:tt2_syn_tags = '<% %>'
"PHP"
:let b:tt2_syn_tags = '<? ?>'
"TT2 and HTML"
:let b:tt2_syn_tags = '\[% %] <!-- -->'
все подсвечивает, норм, но в одном пункте баг. Когда используем оператор диапозна [… ] (да и вообще любые квадратные скобки) он на них останавливается и весь последующий код воспринимает как tt, а не как html.
<html>
<body>
<ul>
[% FOREACH num IN [1..10] %]
<li>num: [% num %]</li>
[% END %]
</ul>
</body>
</html>
начиная со строки «IN [1....» идут косяки. Может быть кто-нибудь из вас знает как это можно исправить?
P.S. а если открыть файл из списка файлов NERDTree то вообще как обычный текст распознает…