gpt4 book ai didi

syntax-highlighting - gVim : remove syntax highlighting groups

转载 作者:行者123 更新时间:2023-12-04 20:49:00 25 4
gpt4 key购买 nike

原标题是“特定于语言的配色方案防止较简单的配色方案为某些特定于语言的标签着色”

我正在使用 gVim 7.3(在 Ubuntu 12.04 Arch x86/64 上,这很重要)。

更新(2013-03-02):

我想我终于可以准确表达我的意思了(我仍然找不到正确的命令,假设它甚至存在!)。基本上这是流程:

  • 使用定义几个基本组(如语句、注释、函数)的小尺寸颜色方案启动 session ;
  • 切换到“更大”的颜色方案(如 Solarized 或 Jellybeans),它定义了更具体的组(如 vimCommand、hsImport 或 ruby​​BeginEnd)。这些更具体的组会覆盖基本组;
  • 切换回“较小”的配色方案(未定义特定组的配色方案)。

  • 结果是 session 中充斥着“无家可归”的群体,这些群体掩盖了基本的群体并阻止了一些词的突出显示。这些无家可归的群体如下所示:

    输入 :hi vimCommand 输入
    输出 vimCommand xxx cleared
    顺便说一下,在 Solarized 的 github 问题跟踪器中遇到并发布了类似的内容 → Vim colorscheme leaves a wake of destruction when switching away

    更新(2012-11-25):

    也许,一个好的解决办法是清除当前 session 的“亮点”变量(我不是在谈论像 smartindent encoding变量, number,而是关于变量,如 StatementComment rubyClassxmlTag,即由像 hi link ...命令中定义的, highlight ... 等)。
    如果有人可以解释它是如何存储在内存中的,它可能会帮助我弄清楚如何清除它(我尝试通过 :mksession mysession.vim 保存 session ,然后查看它,但没有任何语法突出显示变量的痕迹)。

    此外,这只是一个模糊的假设,似乎 :hi clear 没有清理高亮组的原因是“剩菜”是通过间接定义(例如 hi link )定义的。

    原来的:

    当我的默认颜色方案(a modified version of blueshift )加载时,每个应该突出显示的标签都正确着色。
    enter image description here

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

    如果我再次切换到我的默认颜色方案( :colo blueshifted ),一些突出显示被禁用:
    enter image description here

    似乎在 session 开始时,如果我使用未指定某些特定语言标签行为的配色方案,这些标签将使用一些现有颜色自动着色。

    我知道 jellybeans 的语言特定标签保留在“缓存”中并且负责禁用自动着色功能,因为如果我在没有特定语言标签的颜色方案之间切换(从未使用过 jellybeans),自动-着色没有被破坏。

    其他配色方案也会发生同样的情况(例如 railscasts.vim 使用特定于 HTML 的着色)。我知道我可以通过在不太具体的配色方案中添加缺失的标签来解决这个问题,但我正在寻找一个更通用的解决方案。

    问题
  • 在更详细的配色方案之后加载不太详细的配色方案时,我该怎么做才能避免禁用这些自动设置颜色(在加载第一个配色方案时使用)?
  • 我可以在更改配色方案时清理 session 缓存(即从“ session 缓存”中删除 jellybeans.vim 使用的特定标签)吗?

  • 我的尝试
    这些是我在各种组合中使用的命令,但无济于事:
    :syntax off
    :syntax clear
    :hi clear
    :syntax reset

    唯一有效的方法(显然!)是手动重新定义“简单”配色方案中缺少的 hi link 命令。但是当然这与使用其他颜色方案(如 Solarized)的颜色改变没有什么不同。当然,这不是“如何删除突出显示组的剩余部分?”问题的解决方案。

    最佳答案

    我可能有点晚了 :-) 但我相信我解决了这个问题。以下是 the post I made on the Solarized issue tracker 的报价在 GitHub 上。

    大家好,

    很抱歉在上次评论一年后在这里闯入并建议关闭我没有参与的项目的问题(虽然我是一个快乐的用户 :-) 但是我相信: 1. 这是由错误引起的Vim 和 2. 我找到了一个相当优雅的解决方法。所以我想这个问题可以关闭吗?

    几年前,我为 Vim 编写了一个配色方案切换器插件,但从未发布过。在创建我的插件后不久,我注意到了这个问题中描述的行为,并对此感到恼火,确信这是 Vim 中的一个错误。我什至试图解决 Vim C 代码中的问题,但这对我来说有点太多了:-]。那时我从未听说过 Solarized;我遇到了其他几种配色方案(包括我自己的)的问题。

    今天我决定发布配色方案切换器插件(见 xolox/vim-colorscheme-switcher),在发布插件之前,我决定再次尝试解决这里描述的问题。我尝试了各种讨厌的黑客,但最终得到了一个相当优雅的解决方法,它似乎不太脆弱。自述文件/主页包含 explanation of how it works (为了您的方便,我在下面引用它)。

    Vim 配色方案的编写方式与在大量配色方案之间快速切换的想法并不真正兼容。在我看来,这是 Vim 内部如何工作的一个丑陋的实现细节,换句话说,我认为这是一个应该修复的错误……以下是一些详细解释问题的引用资料:

  • Vim colorscheme leaves a wake of destruction when switching away
  • gVim: remove syntax highlighting groups

  • 由于此行为阻碍了配色方案的循环,配色方案切换器插件包含一个应该隐藏问题的解决方法:
  • 启动时会创建一个字典,用于记住突出显示组之间的链接。
  • 在加载配色方案前后,配色方案切换器插件运行:highlight命令不带任何参数来查找突出显示组之间的链接。找到的每个链接都会添加到字典中。更新现有条目。这是通过拨打 xolox#colorscheme_switcher#find_links() 来完成的。 .
  • 加载配色方案后,配色方案切换器插件运行:highlight命令不带任何参数来查找处于“已清除”状态的突出显示组。对于这些组中的每一个,如果它们之前已链接,则将恢复链接。这是通过拨打 xolox#colorscheme_switcher#restore_links() 来完成的。 .

  • 可能这个解决方案仍然不完美,但它比开箱即用的行为要好得多:在我实现上述步骤之前,当我循环使用我的配色方案时,Vim 最终会以白色背景上的黑色文本结束,并且没有其他的!通过上述步骤,我可以根据需要循环多次,到目前为止我检查过的所有配色方案看起来都不错。

    我希望对配色方案切换器(使用的技术)提供反馈;我希望它对你和我一样有效。我在 Linux (GTK) 上的 Vim 7.3 和 MacVim 7.3 中对其进行了测试。

    关于syntax-highlighting - gVim : remove syntax highlighting groups,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12915797/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com