代码之家  ›  专栏  ›  技术社区  ›  matt wilkie

一次为所有文件类型扩展/修改vim突出显示?

  •  3
  • matt wilkie  · 技术社区  · 14 年前

    如何扩展/修改vim突出显示 全部的 一次输入文件类型?

    我有一些相对简单的模式,我想用不同的方式突出显示,这些模式可以出现在任何文件类型中。因此,与其将下面的内容添加到我可能使用的每个可能的文件类型(~/.vim/syntax/python.vim,…/css.vim,…/html.vim,…)中,是否有某种方法可以为所有文件类型定义一次?

    syn match   SpecialComment  "@[@\-+].*" containedin=Comment
    syn match   Comment     "\* .*$"hs=s+1  containedin=SpecialComment
    

    更新:

    按照建议,我将更改保存到 ~/.vim/after/filetype.vim ,其结果是 Cream 但不是股票Gvim或Vim。我使用的实际代码 here ,要测试的示例python文件 here ,以及所需的结果:

    what the pastebin filetypes.vim looks like in Cream

    1 回复  |  直到 14 年前
        1
  •  3
  •   DrAl    14 年前

    你可以试着把这两条线插进去 ~/.vim/after/filetype.vim . 它应该在任何顶级语法文件之后获得。它可能不是放置它的“正确”位置,但它应该可以工作。

    filetype.vim似乎是在语法文件之前获得的,因此它被默认语法文件覆盖。因此,我建议您创建一个新文件,名为:

    ~/.vim/after/common_syntax.vim
    

    用你感兴趣的高光线条。然后,将此添加到 ~/.vim/after/filetype.vim :

    if !exists("after_autocmds_loaded")
        let after_autocmds_loaded = 1
        au BufNewFile,BufRead * source ~/.vim/after/common_syntax.vim
    endif
    

    这将导致在读取文件后获得该文件的源代码。

    P.S.回复您的示例代码中的注释:“为什么我们不能使用普通的“comment”组而不是“pythoncomment”等?”,这是因为语法高亮组是pythonComment,它的颜色与Comment相同。如果你的语法足够独特,不成问题,你可以 containedin=ALL . 如果它很接近,但不是很独特,你可以 containedin=ALLBUT,conflictgroup 哪里 conflictgroup 是要避开的突出显示组。