【问题标题】:gvim syntax highlight for different types of lines不同类型行的 gvim 语法高亮
【发布时间】:2017-03-05 14:06:00
【问题描述】:

过去,我已经为简单的自定义格式做了几个语法高亮文件(甚至稍微改变了格式,以便能够根据我的技能制作语法文件,效果上)。

但这一次我感到困惑,我会感谢一些帮助。

文件格式(显然)是一个文本文件,其中每一行包含三个由空格分隔的不同元素,它们可以是“符号”(包含一系列字母数字字符和连字符的名称)或“字符串”(一系列任意字符,包括空格,但不包括管道)。

字符串只能位于行首或行尾,中间元素只能是符号。如果字符串是第一个元素,则字符串在末尾用竖线分隔,如果是最后一个元素,则在开头用竖线分隔。

但一行也可以是所有符号,字符串首尾符号,字符串尾尾符号。

如果字符串是第一个元素,则字符串后面总是跟一个管道,或者 如果它们是最后一个元素,则使用管道作为前缀。

例子:

所有符号

this-is-a-symbol another-one and-another

第一个字符串

This is a string potentially containing any char| symbol symbol

最后一个字符串

symbol symbol |A string at the end of the line

第一个和最后一个字符串

This is a string| now-we-have-a-symbol |And here another string

这四个示例是正确格式化的唯一可能性。

所有符号都需要不同颜色,第一个元素使用特定颜色,第二个元素使用特定颜色,第三个元素使用一个特定颜色。 但无论位置如何,字符串都会有一种独特的不同颜色。

如果管道字符可以用与背景相似(不完全相同)的颜色“变暗”,这将是一个很大的优势。但我想我可以自己解决这个问题。

文件中与显示的行不同的行必须突出显示为错误(如红色背景)。

一些帮助?

ps:stackoverflow 对我的示例应用了一种语法突出显示,这可能会产生误导

【问题讨论】:

  • 这是一种疯狂的格式。 (这也是模棱两可的。)
  • 我认为它对于它需要服务的目的来说是实用和简洁的,它定义得很好,我可以很容易地用正则表达式解析它。但我不知道如何在 Vim 中突出显示它,在这种情况下我同意这很疯狂,因为我什至无法开始这样做......
  • 到目前为止你有没有尝试过?通过展示您的尝试并描述您遇到困难的部分,我们可以更好地了解您的熟练程度并给出更准确的答案。就目前而言,看起来您已经发布了需求并希望有人为您编写代码。

标签: regex vim syntax-highlighting file-format vim-syntax-highlighting


【解决方案1】:

我发现了一种比我最初认为的正则表达式更简单的方法。最后我只需要匹配第一个元素和最后一个元素,我怎么能没有想到......所以这是我的解决方案,它似乎适用于我的具体情况。它只是不会突出显示格式错误的行。现在已经足够好了。感谢您的耐心和关注。

" Vim syntax file
" Language:         ff .txt

if exists("b:current_syntax")
  finish
endif

setlocal iskeyword+=:

syn match Asymbol /^[a-zA-Z0-9\-]* /
syn match Csymbol / [a-zA-Z0-9\-]*$/
syn match Astring /^.*| /
syn match Cstring / |.*$/

highlight link Asymbol Constant
highlight link Csymbol Statement
highlight link Astring Include
highlight link Cstring Comment

let b:current_syntax = "ff"

【讨论】:

    猜你喜欢
    • 2011-07-23
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    • 2022-09-24
    • 2022-01-20
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    相关资源
    最近更新 更多