neovim只突出显示具有特定扩展名的文件中的sytax(无论文件类型如何)

mqkwyuun  于 2022-11-11  发布在  其他
关注(0)|答案(2)|浏览(180)

我有两个内容相同的文件:index.html.erbindex.html.ecr中的一个或多个。
在nvim中输入:set ft?,则在两种情况下都返回filetype=eruby
我正在运行几个插件,包括:vim-railsvim-crystal中的一个或多个。
我试过关闭语法,然后再打开。
下面是index.html.{erb, ecr}文件的内容:

<!doctype html>
<html>
    <head>
        <link rel="stylesheet" type="text/css" href="/css/style.css">
        <meta charset="UTF-8">

高亮显示屏幕截图:

wbgh16ku

wbgh16ku1#

从neovim默认的eruby.vim语法文件看,ecr似乎不是eruby可以识别的文件类型。同样,当我自己测试时,当文件具有ecr文件类型时,键入:set ft?显示文件类型为HTML。
虽然,即使设置语法和文件类型到eruby应该工作,他们不,因为它与其他语言,如python。我相信这可能是由于错误的eruby语法文件,或其他地方的 vis。如果它是一个错误的eruby.vim文件,维护者是TPope,并可以联系,如果需要的话。
eruby.vim的相关部分:

if &filetype =~ '^eruby\.'
  let b:eruby_subtype = matchstr(&filetype,'^eruby\.\zs\w\+')
elseif !exists("b:eruby_subtype") && main_syntax == 'eruby'
  let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
  let b:eruby_subtype = matchstr(s:lines,'eruby_subtype=\zs\w\+')
  if b:eruby_subtype == ''
    let b:eruby_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.erb\|\.eruby\|\.erubis\)\+$','',''),'\.\zs\w\+\%(\ze+\w\+\)\=$')
  endif
  if b:eruby_subtype == 'rhtml'
    let b:eruby_subtype = 'html'
  elseif b:eruby_subtype == 'rb'
    let b:eruby_subtype = 'ruby'
  elseif b:eruby_subtype == 'yml'
    let b:eruby_subtype = 'yaml'
  elseif b:eruby_subtype == 'js'
    let b:eruby_subtype = 'javascript'
  elseif b:eruby_subtype == 'txt'
    " Conventional; not a real file type
    let b:eruby_subtype = 'text'
  elseif b:eruby_subtype == ''
    let b:eruby_subtype = g:eruby_default_subtype
  endif
endif
wwtsj6pe

wwtsj6pe2#

尝试:set filetype=eruby.html
查看eruby.vim语法文件,它似乎需要一个点后的“子类型”。

相关问题