11

使用 vim 的隐藏功能set cole=2时,vim 隐藏 cchar 中配置的任何内容的适当文本,并使用 Conceal 组突出显示它。

我的问题是我使用 c/c++ 中的隐藏功能来替换&& ||unicode ⋀ ⋁ 等操作,并且我还在 html 中使用 concel 替换文本实体,例如“ç” 到“ç”。

所以我在 ~/.vim/after/syntax/c.vim

hi clear Conceal

并在 ~/.vim/after/syntax/html.vim

hi Conceal cterm=NONE ctermbg=NONE ctermfg=darkblue

问题是这个设置是全局的。如果我打开 ac 文件,然后打开一个 html 文件,当我回到 c 文件时,Conceal 组会根据最后打开的缓冲区突出显示。

我的问题是:我可以将 Conceal 组设置为使用与 Conceal 不同的东西吗?如果没有,我怎样才能使突出显示特定于当前缓冲区(而不是全局)?

4

1 回答 1

9

你不能。好吧,您可以设置:autocmds为根据当前缓冲区切换Conceal组的突出显示,但对于其他类型的非活动可见缓冲区,它仍然会关闭。一般来说,亮点组是全球性的,这不太可能改变。

为了解决您的困境,我会选择一个突出显示,Conceal因为它既不显眼,适合您的 C/C++ 使用,又在视觉上不同,可以显示替换的 HTML 实体。对我来说,完全清除Conceal突出显示不是预期用途。它应该始终提醒您,您所看到的并不是文本中的实际内容。

于 2013-02-25T17:31:34.267 回答