vim语法高亮-灵活识别自定义keywords/types(typedef)

vim syntax highlighting - flexible recognition of custom keywords/types (typedef)

在我的 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 形式的每个实例。

有人能帮忙吗?

syn keyword cppType \<type_.*/

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

  • :syn keyword不带正则表达式,只带字面关键字;您需要 :syn match(并将正则表达式括在定界符中)
  • .*/ 将匹配行中最后一个 / 之前的所有内容;您宁愿需要 \w\+ 将匹配限制为标识符的其余部分,并需要 \> 强制关键字结束。因此:
syn match cppType "\<type_\w\+\>"

将其放入 ~/.vim/after/syntax/cpp.vim,您应该可以开始了。

您的问题本可以通过出色的文档得到解决。了解如何查找命令和导航内置 :help;它内容全面,提供了许多技巧。您不会像其他编辑器那样快速学习 Vim,但如果您致力于不断学习,它将被证明是一个非常强大和高效的编辑器。