Nad*_*oli 5 vim color-scheme syntax-highlighting vim-syntax-highlighting
原始标题是«语言特定的颜色方案阻止更简单的颜色特定的语言特定标签 »
我正在使用gVim 7.3 (在Ubuntu 12.04 Arch x86/64上,这很重要).
我想我终于可以完全表达我的意思了(我仍然找不到正确的命令,假设它甚至存在!).基本上这是流程:
结果是,会话混乱了"无家可归者"群体,这些群体模糊了基本群体,并防止某些词语被突出显示.这些无家可归者群体如下所示:
输入 :hi vimCommandEnter
输出 vimCommand xxx cleared
顺便说一下,在Solarized的github问题跟踪器中经历了类似的事情并发布了相似的内容→ Vim colorscheme在切换时会留下破坏的痕迹
也许,一个好的解决方案将清除当前会话的"亮点"变量(我不是在谈论像变量smartindent,encoding,number,而是约变量一样Statement,Comment rubyClass,xmlTag,即由像命令定义的值hi link ...,highlight ...等等).
如果有人能解释它是如何存储在内存中的,那么它可能有助于我弄清楚如何清理它(我已经尝试保存会话:mksession mysession.vim然后查看它,但没有任何语法高亮变量的痕迹).
此外,这只是一个模糊的假设,似乎:hi clear没有清理突出组的原因是"剩饭"是通过间接定义(例如hi link)定义的.
加载我的默认colorscheme(blueshift的修改版本)后,每个应突出显示的标签都会正确着色.

在会话期间,我切换到jellybeans colorscheme(:colo jellybeans),它有比我的默认颜色方案更多的选项:

如果我再次切换到我的默认colorscheme(:colo blueshifted),则禁用某些突出显示:

似乎在会话开始时,如果我使用的颜色方案没有指定某些特定于语言的标记的行为,那么这些标记会使用一些现有颜色自动着色.
我知道软糖的特定语言标签仍保留在"缓存"中,并负责禁用自动着色功能,因为如果我在没有语言特定标签的颜色方案之间切换(不使用软糖),自动着色不会破坏.
其他颜色方案也是如此(例如railscasts.vim使用HTML特定的着色).我知道我可以通过在不太具体的颜色方案中添加缺少的标签来解决问题,但我正在寻找更通用的解决方案.
问题
如果在更详细的颜色方案之后加载不太详细的颜色方案,我该怎么做才能避免这些自动设置颜色(加载第一个颜色方案时使用)被禁用?
我可以在更改颜色方案时清理会话缓存(即从"会话缓存"中删除jellybeans.vim使用的特定标记)吗?
我的尝试 这些是我在各种组合中使用的命令,但无济于事:
:syntax off
:syntax clear
:hi clear
:syntax reset
Run Code Online (Sandbox Code Playgroud)
唯一可行的(显然!)是手工重新定义hi link"简单"colorscheme中缺少的命令.但是当然使用其他颜色方案(如Solarized)和改变颜色也没有什么不同.当然,这不是解决问题"你如何删除突出显示组残留?"的问题.
我可能有点晚了 :-) 但我相信我解决了这个问题。以下是我在 GitHub上的 Solarized 问题跟踪器上发表的帖子的引述。
大家好,
很抱歉在上次评论一年后在这里闯入并建议关闭我没有参与的项目的问题(虽然我是一个快乐的用户 :-) 但是我相信: 1. 这是由错误引起的Vim 和 2. 我找到了一个相当优雅的解决方法。所以我想这个问题可以关闭吗?
几年前,我为 Vim 编写了一个配色方案切换器插件,但从未发布过。在创建我的插件后不久,我注意到了这个问题中描述的行为,并对此感到恼火,确信这是 Vim 中的一个错误。我什至试图解决 Vim C 代码中的问题,但这对我来说有点太多了:-]。那时我从未听说过 Solarized;我遇到了其他几种配色方案(包括我自己的)的问题。
今天我决定发布配色方案切换器插件(请参阅xolox/vim-colorscheme-switcher),在发布插件之前,我决定再次尝试解决这里描述的问题。我尝试了各种讨厌的黑客,但最终得到了一个相当优雅的解决方法,它似乎不太脆弱。自述文件/主页包含对其工作原理的解释(为了您的方便,我在下面引用它)。
Vim 配色方案的编写方式与在大量配色方案之间快速切换的想法并不真正兼容。在我看来,这是 Vim 内部如何工作的一个丑陋的实现细节,换句话说,我认为这是一个应该修复的错误……以下是一些详细解释问题的参考资料:
由于此行为阻碍了配色方案的循环,配色方案切换器插件包含一个应该隐藏问题的解决方法:
xolox#colorscheme_switcher#find_links().xolox#colorscheme_switcher#restore_links().可能这个解决方案仍然不完美,但它比开箱即用的行为要好得多:在我实施上述步骤之前,当我循环使用我的配色方案时,Vim 最终会以白色背景上的黑色文本结束,并且没有其他的!通过上述步骤,我可以根据需要循环多次,到目前为止我检查过的所有配色方案看起来都很好。
我希望对配色方案切换器(使用的技术)提供反馈;我希望它对你和我一样有效。我在 Linux (GTK) 上的 Vim 7.3 和 MacVim 7.3 中对其进行了测试。