Каков наилучший способ сделать vim ярлыком ejs (http://embeddedjs.com/)? Можно ли настроить html highlight для файла в целом, а javascript - выделить части внутри <%% > ? Цените свою помощь!
Синтаксическая подсветка для .ejs файлов в vim
Ответ 1
Кредиты идут на @inkedmn, просто хотелось указать, что привязка html работает лучше, поэтому поместите это в ваш файл ~/.vimrc:
au BufNewFile,BufRead *.ejs set filetype=html
Ответ 2
Здесь что-то я взломал сегодня (внес некоторые изменения в eruby script). Для этого необходимо установить плагин vim-javascript.
Ответ 3
У меня были лучшие результаты, загружающие этот файл синтаксиса непосредственно в ~/.vim/syntax
Ответ 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