vim语法高亮 - 灵活识别自定义关键字/类型(typedef)

时间:2015-05-04 09:18:37

标签: vim syntax typedef highlighting

在我的C ++代码中,我使用的定制类型很像

typedef double type_scalar
typedef std::complex<type_scalar> type_complex
etc.

我遵循惯例,我总是将type_ *放在我的类型名称前面。 我使用(G)VIM编辑器,并希望语法突出显示我的自定义类型,就像内置类型一样(没有在语法文件中明确地列出它们)。

我在网上搜索了可能的解决方案,并尝试从正则表达式中添加所有内容,例如

syn keyword cppType \<type_.*/

syn keyword cppType type_[^\ ]*\

syn match typedefSuffix     '\a\+'
syn keyword cppType     type_ nextgroup=typedefSuffix

在我的〜/ .vim / syntax / cpp.vim文件中,但我无法获得所需的结果,即获取表单type_whatever的每个实例都突出显示。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

syn keyword cppType \<type_.*/

那个看起来很有希望,除了:

  • :syn keyword不使用正则表达式,只使用文字关键字;你需要:syn match(并将正则表达式括在分隔符中)
  • .*/将匹配行中最后一个/的所有内容;您需要\w\+将匹配限制为标识符的其余部分,并\>强制执行关键字的结束。埃尔戈:
syn match cppType "\<type_\w\+\>"

把它放进~/.vim/after/syntax/cpp.vim,你应该好好去。

您的问题可以通过优秀的文档解决。了解如何查找命令并导航内置:help;它是全面的,并提供了许多提示。你不像其他编辑那样快速学习Vim,但如果你致力于不断学习,那么它将成为一个非常强大和高效的编辑器。