如何使vim语法高亮与内容隐藏同时生效?

9
我正在使用HaskellConcealPlus来隐藏Haskell代码的某些元素,以及从这里获取haskell.vim以获得更好的Haskell语法高亮。下面是它的样子:

enter image description here

问题在于,在被隐藏后,div失去了橙色高亮,这导致'/'被突出显示为橙色,但'÷'是白色的,即使它们都是中缀运算符。有没有办法让语法高亮和隐藏都能正常工作?
1个回答

4

一旦文本的某些部分被隐藏,它们就会被着色,这是由高亮显示组Conceal定义的。 :help hl-Conceal将为您提供有关该组的更多详细信息。 :highlight将显示所有高亮显示组及其颜色声明。例如,我的隐藏组的外观如下所示:

Conceal        xxx ctermfg=4 ctermbg=0 guifg=#8fa1b3 guibg=#2b303b

为了获得更好的颜色效果,你可以在你的 .vimrc 文件中为你的隐藏组设置自定义颜色和属性。以下是一个示例,它将使用粗体、下划线文本,使用 ANSI 颜色 9 作为前景色以及 ANSI 颜色 0 作为所有扩展名为 hs 的文件的背景色:
augroup AdjustConceal
    autocmd!
    autocmd ColorScheme *.hs highlight Conceal cterm=bold,underline ctermfg=9 ctermbg=0
augroup END

或者,您可以直接链接到现有的高亮组。下面的示例将从Conceal链接到Search

augroup AdjustConceal
    autocmd!
    autocmd ColorScheme *.hs highlight link Conceal Search
augroup END

1
谢谢,我可能只会这样做,所以如果我想要不同的高亮显示来突出显示隐藏的单词,基于它们没有被隐藏时的高亮显示方式,那么我就没办法了。 - Marcus Buffett
刚尝试了第一个建议,但颜色没有改变,仍然和我发布的图片看起来一样,有什么想法吗? - Marcus Buffett
你在终端上使用Vim还是一些图形界面的版本,比如gVim或MacVim? - Saucier
我提供的 autocmds 应该适用于扩展名为 .hs 的文件。所以我不知道你的文件是否有这个扩展名。但是你可以尝试使用通配符 * 进行测试。 - Saucier
@MarcusBuffett 你能为不同类别的代码获得不同的高亮显示吗?我正在尝试在 J 中隐藏注释标记 NB.,但它会破坏注释高亮显示。 - JDG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接