如何在Vim中将Ruby Sorbet签名高亮为低强调注释?
解决Sorbet签名全块高亮为注释的问题
要让Sorbet的sig do ... end块内所有内容都以Comment样式高亮,直接在~/.vim/after/syntax/ruby.vim中添加以下配置即可:
" 覆盖vim-polyglot中Sorbet签名的语法高亮关联 hi link rubySorbetSig Comment hi link rubySorbetSigBody Comment hi link rubySorbetSigKeyword Comment hi link rubySorbetSigType Comment hi link rubySorbetSigParam Comment hi link rubySorbetSigOperator Comment
如果上述语法组名称不匹配(不同版本的vim-ruby可能略有差异),可以先运行:syn list查看当前和Sorbet相关的语法组,再把它们全部链接到Comment组。这样整个签名块的内容都会和注释同色,视觉上被弱化。
实现类似byesig的低对比度保留色彩效果
这种效果确实需要自定义一组高亮规则,因为要保留原语法元素的色彩倾向但降低对比度。以下是针对jellybeans主题的示例配置(同样放在~/.vim/after/syntax/ruby.vim):
" 定义低对比度的自定义高亮组(对应jellybeans原Ruby语法色调整) hi def rubySorbetDimKeyword guifg=#9AA6C0 ctermfg=67 " 原rubyKeyword是#8197BF,降低亮度 hi def rubySorbetDimType guifg=#C4B28A ctermfg=137 " 原rubyType是#E9C062,降低饱和度 hi def rubySorbetDimParam guifg=#8FB48F ctermfg=107 " 原rubyIdentifier是#A8FF60,降低亮度 hi def rubySorbetDimOperator guifg=#999999 ctermfg=246 " 原rubyOperator是#FFFFFF,调暗 " 将Sorbet签名内的语法元素链接到自定义组 hi link rubySorbetSigKeyword rubySorbetDimKeyword hi link rubySorbetSigType rubySorbetDimType hi link rubySorbetSigParam rubySorbetDimParam hi link rubySorbetSigOperator rubySorbetDimOperator hi link rubySorbetSigBody rubySorbetDimParam " 块内默认文本用参数的低对比度色 hi link rubySorbetSig Comment " 外层sig/end用注释色统一
如果要适配其他主题,需要先查看原Ruby语法组的颜色(用:hi rubyKeyword等命令查看),再手动调整出更低对比度的颜色值。这种方式确实需要针对每个语法元素单独配置,但效果更接近VSCode的byesig扩展。
内容的提问来源于stack exchange,提问作者Kache
相关产品推荐
相关产品推荐

