着色将颜色定义为类型

时间:2011-04-29 03:27:17

标签: vim syntax-highlighting

有没有办法在C?

中使用typedef语句定义的新类型添加语法着色
typedef struct {
    int a,b;
} MyStruct;

MyStruct *InitMyStruct(MyStruct *struct, int a, int b);
    ^         ^           ^               ^      ^
    +---------+-----------+               +------+
    Same Color                             Correct type color

如果它本身不可能(我猜是这样),是否有任何插件可以使这个视觉线索工作?

1 个答案:

答案 0 :(得分:8)

我在Vim的帮助下找到了我的问题的确切解决方案,我将在此发布,以防将来有人需要这个。这正是我想要的:一种阅读代码并相应地突出显示它的方法。

syntax.txt

第15节:突出显示标签

[...]
Only highlighting typedefs, unions and structs can be done too.  For this you
must use Exuberant ctags (found at http://ctags.sf.net).

Put these lines in your Makefile:

# Make a highlight file for types.  Requires Exuberant ctags and awk
types: types.vim
types.vim: *.[ch]
        ctags --c-kinds=gstu -o- *.[ch] |\
                awk 'BEGIN{printf("syntax keyword Type\t")}\
                        {printf("%s ", $$1)}END{print ""}' > $@

And put these lines in your .vimrc: >

   " load the types.vim highlighting file, if it exists
   autocmd BufRead,BufNewFile *.[ch] let fname = expand('<afile>:p:h') . '/types.vim'
   autocmd BufRead,BufNewFile *.[ch] if filereadable(fname)
   autocmd BufRead,BufNewFile *.[ch]   exe 'so ' . fname
   autocmd BufRead,BufNewFile *.[ch] endif