【问题标题】:Vim syntax highlight first word of each lineVim 语法高亮每行的第一个单词
【发布时间】:2015-10-11 16:40:12
【问题描述】:

我有一种文件格式,其中每行的第一个单词都有特殊含义。我想写一个.vim 文件来自定义这样的语法高亮。我阅读了一些关于突出显示关键字或匹配的教程。但似乎没有明确的方法可以解决我的问题。有谁知道如何实现它?

【问题讨论】:

    标签: vim syntax highlight


    【解决方案1】:

    您需要创建一个语法匹配器,然后将其链接到突出显示。

    syn match startLineMatch /^\s*\w\+/
    hi def link startLineMatch Error
    

    这将突出显示每一行的第一个单词。

    /^\s*\w\+/ 匹配行的开头^,然后是任意数量的空格\s*,然后是一个或多个单词字符\w\+。一个单词字符相当于[a-zA-Z]。如果你想匹配任何非空白字符,你可以使用\S 而不是\w

    在这种情况下,我已经重用(链接)了错误的突出显示定义,用于我们的自定义突出显示定义以用于行开始匹配。

    如果您试图覆盖现有的突出显示组,此方法将不起作用,因为在语法突出显示中,syn keyword 的优先级高于 syn match。您必须删除现有的关键字突出显示才能使您的新匹配生效。

    【讨论】:

    • 谢谢。我之前创建了一些简单的匹配。 “/^\w\+/”部分是我不明白的。我刚才尝试了这种模式,但它不起作用。
    • 我试过“/^\S\+/”,它可以部分工作。但它不会突出显示任何缩进行(即,如果第一个单词在 \tab 之后,则不会突出显示)。这是否意味着在这种情况下“\tab”实际上被视为“第一个单词”?
    猜你喜欢
    • 1970-01-01
    • 2011-05-08
    • 2015-01-27
    • 2012-08-16
    • 2014-11-14
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    • 2014-07-04
    相关资源
    最近更新 更多