当使用 vim 的隐藏功能时 set cole=2
, vim 隐藏 cchar 中任何配置的适当文本,并使用隐藏组突出显示它。
我的问题是我使用 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
问题是这个设置是全局的。如果我打开一个 c 文件,然后打开一个 html 文件,当我回到 c 文件时,隐藏组会根据上次打开的缓冲区突出显示。
我的问题是:我可以将隐藏组设置为用于与隐藏不同的东西吗?如果不是,我怎样才能使当前缓冲区(而不是全局)特定的突出显示?
最佳答案
你不能。那么,您可以设置:autocmds
切换 Conceal
组的突出显示取决于当前缓冲区,但对于其他类型的非事件可见缓冲区,它仍然会关闭。一般来说,高亮组是全局的,这不太可能改变。
为了解决您的困境,我会为 Conceal
选择一个突出显示这对于您的 C/C++ 使用来说足够不显眼,但在视觉上明显不同以显示替换的 HTML 实体。对我来说,彻底清除 Conceal
突出显示不是预期用途;它应该始终提醒您所看到的并不是文本中的实际内容。
关于Vim 隐藏高亮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15071808/