neovim仅在具有特定扩展名的文件中突出显示sytax(不考虑文件类型)

neovim仅在具有特定扩展名的文件中突出显示sytax(不考虑文件类型),vim,neovim,Vim,Neovim,我有两个内容相同的文件:index.html.erb和index.html.ecr 在nvim中键入:set ft?将返回两种格式的filetype=eruby 我正在运行一些插件,包括:vim-rails和vim-crystal 我试过关闭语法,然后再打开 以下是index.html.{erb,ecr}文件的内容: <!doctype html> <html> <head> <link rel="stylesheet" type

我有两个内容相同的文件:
index.html.erb
index.html.ecr

在nvim中键入
:set ft?
将返回两种格式的
filetype=eruby

我正在运行一些插件,包括:
vim-rails
vim-crystal

我试过关闭语法,然后再打开

以下是
index.html.{erb,ecr}
文件的内容:

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

突出显示的屏幕截图:


查看neovim的默认
eruby.vim
语法文件,似乎
ecr
不是eruby可识别的文件类型。此外,在测试自己时,当文件具有
ecr
文件类型时,键入
:set ft?
将文件类型显示为HTML

尽管,即使设置语法和文件类型到eruby应该可以工作,但它们不像其他语言(如python)那样工作。我相信这可能是由于eruby语法文件中的错误,或者*vi*s中的其他地方。如果它是
eruby.vim
文件中的一个bug,那么维护人员是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

:为每个文件设置语法?
显示什么?(
:h'syntax'
可能有帮助)
:set syntax?
为两个文件返回
syntax=eruby
。您尝试过最小的
.vimrc
?通常情况下,这是一些你不记得或不容易发现的其他插件或设置。