Ответ на оба вопроса - нет (я не знаю никаких конвертеров и у меня нет файла подсветки синтаксиса q), но XML-формат подсветки синтаксиса Notepad++ выглядит чрезвычайно простым. У меня нет под рукой "Q", но я взглянул на один из веб-сайт, и перевод выглядит довольно тривиально. В этом случае вы можете выполнить большую часть работы с помощью:
" Remove all the lines that aren't lists of keywords
" (there doesn't seem to be anything much more complicated
" than that in the definition file)
:g!/<Keywords name=/d
" Convert the lines (fairly poor XML parsing here!)
:%s/\s*<Keywords name="\([^"]\+\)">\([[:alpha:]_ ]\{-}\)<\/Keywords>/syn keyword \1 \2/
Это генерирует множество строк, которые выглядят так:
syn keyword Words1 case then do while
Вам придется настроить класс синтаксиса (в данном случае Word1), чтобы он был выделен в Vim (или синхронизировать его с чем-то, что будет выделено в Vim).
Вероятно, вы могли бы обрабатывать символы с помощью регулярного выражения, но может быть проще просто сделать их вручную, поэтому преобразуйте:
<Keywords name="Operators">- ! " # $ & * , . ; ? @ \ ^ { | } ~ + < = ></Keywords>
в:
syn match Operators /\<[-!"#$&*,.;?@\\^{|}~+<=>]/
(это \<
для обозначения границы слова, за которым следует класс символов [..]
со всеми символами в нем).
Затем вам просто нужно добавить:
if exists("b:current_syntax")
finish
endif
в начале и:
let b:current_syntax = "q"
в конце.
Конечно, это не поможет вам полностью, но, надеюсь, даст вам многое из того, что вам нужно, чтобы получить файл синтаксиса, который вы хотите. Существует много помощи, доступной в:
:help syntax
и просмотрев примеры в каталоге синтаксиса папки среды выполнения.
Удачи!
person
DrAl
schedule
20.10.2010