Подсветка синтаксиса для файлов .ejs в vim - PullRequest
42 голосов
/ 04 января 2011

Каков наилучший способ создания vim highlight ejs (http://embeddedjs.com/) файлов? Можно ли настроить подсветку HTML для файла в целом и подсветку JavaScript для его частей внутри <%%>? Ценю вашу помощь!

Ответы [ 6 ]

67 голосов
/ 24 сентября 2011

Кредиты идут @inkedmn, просто хотел указать, что html-связывание работает лучше, поэтому поместите это в ваш файл ~ / .vimrc:

au BufNewFile,BufRead *.ejs set filetype=html
27 голосов
/ 28 февраля 2011

Вот кое-что, что я написал сегодня (внес некоторые изменения в сценарий Eruby).Для этого требуется установить плагин vim-javascript.

https://github.com/briancollins/vim-jst

8 голосов
/ 14 января 2014

У меня были лучшие результаты при загрузке этого файла синтаксиса непосредственно в ~ / .vim / syntax

3 голосов
/ 16 октября 2014

Для решения, которое использует синтаксис javascript и html, где это необходимо (и не полагается на сторонние плагины javascript), вам нужен файл ftdetect, который запускается autocmd, когда загружаются файлы с расширением .ejs в сочетании с ejsфайл синтаксиса.

Если вас не интересует, как это работает, я собрал пакет, чем вы можете скачать с github здесь .Если вы используете Vundle, просто добавьте это в ваш .vimrc:

Bundle 'nikvdp/ejs-syntax'

Чтобы сделать это самостоятельно, создайте два файла в папке ~/.vim:

Файл ftdetect: ~/.vim/ftdetect/ejs.vim:

autocmd BufNewFile,BufRead *.ejs set filetype=ejs
autocmd BufNewFile,BufRead *._ejs set filetype=ejs

function! s:DetectEjs()
    if getline(1) =~ '^#!.*\<ejs\>'
        set filetype=ejs
    endif
endfunction

autocmd BufNewFile,BufRead * call s:DetectEjs()

И файл синтаксиса (из ответа пользователя 456584): ~/.vim/syntax/ejs.vim

runtime! syntax/html.vim
unlet b:current_syntax

" Include Java syntax
syn include @ejsJavaScript syntax/javascript.vim

syn region ejsScriptlet matchgroup=ejsTag start=/<%/  keepend end=/%>/ contains=@ejsJavaScript
syn region ejsExpr  matchgroup=ejsTag start=/<%=/ keepend end=/%>/ contains=@ejsJavaScript

" Redefine htmlTag so that it can contain jspExpr
syn clear htmlTag
syn region htmlTag start=+<[^/%]+ end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster,ejsExpr,javaScript


" syn keyword ejsPrint contained print
syn match javaScriptType        /\<\zsvars\ze\./
syn match javaScriptSpecial     /\<\zsexports\ze\./
syn match javaScriptFunction    /\<\zsprint\ze(/
syn match javaScriptFunction    /\<\zsinclude\ze(/
syn match javaScriptFunction    /\<\zsincludeObject\ze(/
syn match javaScriptFunction    /\<\zsfetch\ze(/
syn match javaScriptFunction    /\<\zsfetchObject\ze(/

command -nargs=+ HiLink hi def link <args>
HiLink  ejsTag      htmlTag
delcommand HiLink

let b:current_syntax = "ejs"
3 голосов
/ 04 января 2011

Если вы хотите, чтобы они выделялись как обычные файлы .js, вы можете добавить это в свой .vimrc:

au BufNewFile,BufRead *.ejs set filetype=js

Не на 100% уверен, что это то, что вам нужно - надеюсь, это поможет.1004 *

0 голосов
/ 30 июля 2014

попробуйте

cd /usr/share/vim/vim74/syntax #maybe vim64 or other
cp html.vim ejs.vim
vim ejs.vim

Вы можете просто отредактировать html.vim но я предлагаю вам не ... тогда найди

syn region  javaScript start=+<script\_[^>]*>+ keepend end=+</script>+me=s-1` contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc

и напишите

  syn region  ejsScript start=+<%+ keepend end=+%>+ contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc

под этой строкой.

найти

  HtmlHiLink javaScript             Special

добавить

  HtmlHiLink ejsScript             Special

под ним

добавить эту строку в ~/.vimrc

au BufNewFile,BufRead *.ejs set filetype=ejs

теперь ваш код ejs будет выглядеть как код js ... или вы просто хотите, чтобы это выглядело как-то еще?

заменить

  HtmlHiLink ejsScript             Special

(например)

 hi def ejsScript                 term=bold cterm=bold gui=bold

на самом деле, в этом примере две строки могут жить вместе ...

делает ваш код красивым ~

вы можете прочитать это , чтобы помочь вам с синтаксисом vim

...