48

vimがejs(http://embeddedjs.com/)ファイルを強調表示するための最良の方法は何ですか?一般的にファイルのhtmlハイライトと<%%>内の部分にjavascriptハイライトを設定することは可能ですか?あなたの助けに感謝!

4

6 に答える 6

76

クレジットは@inkedmnに送られます.htmlバインディングがよりうまく機能することを指摘したかったので、これを ~/.vimrc ファイルに入れます:

au BufNewFile,BufRead *.ejs set filetype=html
于 2011-09-24T04:21:54.450 に答える
27

これは私が今日作ったものです (eruby スクリプトにいくつかの変更を加えました)。vim-javascript プラグインをインストールする必要があります。

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

于 2011-02-28T01:01:06.703 に答える
3

必要に応じて javascript および html 構文を使用する (サードパーティの javascript プラグインに依存しない) ソリューションの場合、ejs 構文ファイルと組み合わせてautocmd、拡張子を持つファイルが読み込まれたときに実行される ftdetect ファイルが必要です。.ejs

それがどのように機能するかに関心がない場合は、こちらの github から取得できるパッケージをまとめました。Vundle を使用している場合は、これを .vimrc に追加するだけです:

Bundle 'nikvdp/ejs-syntax'

自分で行うには、~/.vimフォルダーに 2 つのファイルを作成します。

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=/%>/ 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"
于 2014-10-16T07:06:34.427 に答える
3

それらを通常の .js ファイルのようにハイライトしたい場合は、これを .vimrc に追加できます:

au BufNewFile,BufRead *.ejs set filetype=js

それがあなたが求めているものであると100%確信しているわけではありません-それが役立つことを願っています.

于 2011-01-04T19:55:54.730 に答える