Подтвердить что ты не робот

Синтаксическая подсветка для .ejs файлов в vim

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

4b9b3361

Ответ 1

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

au BufNewFile,BufRead *.ejs set filetype=html

Ответ 2

Здесь что-то я взломал сегодня (внес некоторые изменения в eruby script). Для этого необходимо установить плагин vim-javascript.

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

Ответ 4

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

au BufNewFile,BufRead *.ejs set filetype=js

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

Ответ 5

Для решения, использующего синтаксис 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()

И файл синтаксиса (из ответа user456584): ~/.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=/%>/ [email protected]
syn region ejsExpr  matchgroup=ejsTag start=/<%=/ keepend end=/%>/ [email protected]

" 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"

Ответ 6

попробуйте это

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` [email protected],htmlCssStyleComment,htmlScriptTag,@htmlPreproc

и напишите

  syn region  ejsScript start=+<%+ keepend end=+%>+ [email protected],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

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

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

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