web-dev-qa-db-ja.com

vimの.ejsファイルの構文のハイライト

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

42
lyuba

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

au BufNewFile,BufRead *.ejs set filetype=html
69
tomaszkubacki

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

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

27
brian

この構文ファイル を〜/ .vim/syntaxに直接ダウンロードして最良の結果が得られました

8
user456584

通常の.jsファイルのように強調表示したい場合は、これを.vimrcに追加できます。

au BufNewFile,BufRead *.ejs set filetype=js

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

3
inkedmn

必要に応じて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"
3
Nik V

これを試して

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コードのようになります...または、他のコードのように見せたいだけですか?

replase

  HtmlHiLink ejsScript             Special

(例えば)によって

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

実際、この例では、2つの線は一緒に住むことができます...

それはあなたのコードを素敵にします〜

あなたは読むことができます this あなたのvim構文を手伝うために

0
kosmos