Normally, Sorbet signatures are syntax highlighted as normal Ruby:
enter image description here

然而,我想在视觉上淡化嘈杂的签名,也许可以通过将它们突出显示为 comments .

以下是~/.vim/after/syntax/ruby.vim的部分内容:

" adapted from: https://github.com/zackhsi/sorbet.vim/blob/master/syntax/ruby.vim
syntax region SigBlock matchgroup=SigBlockDelimiter start="{" end="}" contained transparent
syntax region SigBlock matchgroup=SigBlockDelimiter start="\<do\>" end="\<end\>" contained transparent

" Prevent sorbet elements from being contained by vim-ruby elements.
syntax cluster rubyNotTop add=SigBlock

syntax match Sig "\<sig\>" nextgroup=SigBlock skipwhite

" hi def link SigBlockDelimiter rubyDefine

" Match vim-ruby:
" https://github.com/vim-ruby/vim-ruby/commit/19c19a54583c3e7c07dce18b844ae104695c41d7.
syntax match rubyMagicComment "\c\%<10l#\s*\zs\%(typed\):" contained nextgroup=rubyBoolean skipwhite

" de-emphasize Sorbet sig
highlight default link Sig               Comment
highlight default link SigBlockDelimiter Comment

Like so:
enter image description here

如何获取签名块内部的代码也突出显示为Comment

作为参考,我使用sheerun/vim-polyglot(即vim-ruby/vim-ruby)和nanotech/jellybeans.vim.此外,更理想的是保留 colored颜色 ,但只是"降低对比度",这是VSCode的byesig扩展,但这可能需要定义很多新 colored颜色 和语法规则?

推荐答案

transparent导致突出显示被继承,您不希望这样. 您还可以删除matchgroup,因为您不想单独突出显示分隔符:

" https://github.com/zackhsi/sorbet.vim/blob/master/syntax/ruby.vim

syntax region SigBlock start="{" end="}" contained
syntax region SigBlock start="\<do\>" end="\<end\>" contained

syntax cluster rubyNotTop add=SigBlock

syntax match Sig "\<sig\>" nextgroup=SigBlock skipwhite

syntax match rubyMagicComment "\c\%<10l#\s*\zs\%(typed\):" contained nextgroup=rubyBoolean skipwhite

highlight default link Sig      Comment
highlight default link SigBlock Comment

enter image description here

Ruby相关问答推荐

从同名方法调用 ruby​​ 中的方法

如何在Ruby中匹配大型IP网络对象列表中的IP地址

如何根据数组键对散列键进行排序?

为什么我的二维 Ruby 数组的多个值会发生变化,尽管只更改了其中一个?

冒号:和粗箭头=>有什么区别

在ruby中反转数组的顺序

以编程方式获得完整的 Ruby 版本?

格式化 Ruby 的漂亮打印

如何在 Ruby 中解冻对象?

Ruby 运算符优先级表

group_by 在 rails by 2 或更多属性

如何从 Ruby 判断具有特定 pid 的进程是否正在运行?

从命令行使用Bundle 器将 gem 添加到 gemfile

跳过 Enumerable#collect 中的迭代

rbenv install --list 不列出 2.1.2 版本

Ruby 异常 - 为什么是else?

工厂女孩 - 目的是什么?

如何在 gemspec 中指定最低 Ruby 版本?

Ruby中的字符串和符号有什么区别?

如何在 Ubuntu 12.04 上正确安装 ruby​​ 2.0.0?