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
?通常情况下,这是一些你不记得或不容易发现的其他插件或设置。