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,但如果您致力于不断学习,它将被证明是一个非常强大和高效的编辑器。
在我的 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,但如果您致力于不断学习,它将被证明是一个非常强大和高效的编辑器。