开发者

extend/modify vim highlighting for all filetypes at once?

开发者 https://www.devze.com 2023-01-27 14:39 出处:网络
How do I extend/modify vim highlighting for all filetypes at once? I have certain relatively simple patterns which I\'d like highlight differently, that can occur in any filetype. So rathe开发者_如何

How do I extend/modify vim highlighting for all filetypes at once?

I have certain relatively simple patterns which I'd like highlight differently, that can occur in any filetype. So rathe开发者_如何学运维r than adding something like the below to every conceivable filetype I might use (~/.vim/syntax/python.vim, .../css.vim, .../html.vim, ...) is there some way I can define it once for all filetypes?

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

update:

As suggested I saved my changes to ~/.vim/after/filetype.vim, with the result that it works in Cream but not stock Gvim or Vim. The actual code I'm using here, a sample python file to test against here, and the desired result:

extend/modify vim highlighting for all filetypes at once?


You could try putting those two lines in ~/.vim/after/filetype.vim. That should get sourced after any of the top level syntax files. It's possibly not the 'correct' place to put it, but it should work.

filetype.vim seems to be sourced BEFORE the syntax files, so it gets overwritten by the default syntax file. Therefore, I'd recommend you create a new file called something like:

~/.vim/after/common_syntax.vim

with the highlight lines that you're interested in. Then, add this to ~/.vim/after/filetype.vim:

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

This will cause the file to be sourced once the file has been read.

P.S. Responding to the comment in your sample code: "why can't we use plain ol 'comment' group instead of 'pythoncomment' etc. ?", it's because the syntax highlight group is pythonComment, which is merely coloured in the same way as Comment. If your syntax is unique enough for it not to be a problem, you could just do containedin=ALL. If it is close, but not quite unique, you could do containedin=ALLBUT,conflictgroup where conflictgroup is the highlight group you want to steer clear of.

0

精彩评论

暂无评论...
验证码 换一张
取 消