gpt4 book ai didi

vim - 在 Vim 中,有没有一种不那么笨拙的方式来做一次性高光?

转载 作者:行者123 更新时间:2023-12-01 03:51:35 26 4
gpt4 key购买 nike

一世。问题

我的目标是这样的:

我有一行文字,如

Who left the dead mouse in the fridge?

我想强调第一个 the绿色,仅此一次。也就是说,我不想 syn match ThisMagicWord "\<the\>"或任何会过分强调其他人的东西 the s。

还有一个要求,那就是如果用户编辑了该行的其他文本,请说
Who on earth left the delicious dead mouse in the fridge?

突出显示将跟踪单词 the ,只要用户不编辑那个特定的词。

ii. Kludge

现在,我有一个解决方案。事实上,我为我的解决方案感到自豪,因为思考起来很棘手。但无论如何,这都不是一个好的解决方案。

原来是Unicode字符 Combining Grapheme Joiner在 Vim 中实际上是一个空操作。它不产生字形,也不占用宽度。这是我发现的唯一这样的角色。所以我所做的是,我偷偷地将有问题的行编辑为
Who left the<CGJ> dead mouse in the fridge?

然后定义规则
syn match ThisMagicWord "the<CGJ>"

我将另外触发 BufWritePreBufWritePost从磁盘上的文件中删除 CGJ。

三、问题
  • 除了 CGJ 之外,Vim 中是否有无操作字符(或一种生成无操作字符的方法)?理想情况下是非组合字符,因为 the<CGJ>将不匹配搜索 /the , 由于 Vim 正则表达式处理组合字符的方式。
  • 有没有更好的方法来达到我想要的行为?
  • 最佳答案

    您是对的,目前没有好的方法来标记静态匹配项并在附近完成编辑时使它们保持最新状态。我的方法会比你的混杂更糟糕:在匹配中包含行/列信息(通过 \%l\%v 特殊原子),并尝试使用标记组合更新这些信息(适用于行更改)和线内自定义差异。

    尽管您使用特殊的 Unicode 字符很聪明,但(正如您所承认的)这是一种技巧。我已经在评论中要求您使用,但仍然不完全满意/确信。如果您能提出好的、真实的用例和当前的痛点,请将它们指向 vim_dev mailing list (最好附上功能性草稿补丁)。跟踪此类文本的功能基本上就在那里(在 Vim 内部),只是尚未跟踪并向用户/Vimscript 公开。尽管 Vim 开发一直(通常令人沮丧)缓慢,但您有一个令人信服的论点,新功能可以而且确实会发生。

    关于vim - 在 Vim 中,有没有一种不那么笨拙的方式来做一次性高光?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21982881/

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