【问题标题】:vim syntax highlighting - flexible recognition of custom keywords/types (typedef)vim 语法高亮 - 自定义关键字/类型的灵活识别 (typedef)
【发布时间】:2015-07-13 15:03:58
【问题描述】:

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

谁能帮忙?

【问题讨论】:

    标签: vim syntax typedef highlighting


    【解决方案1】:
    syn keyword cppType \<type_.*/
    

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

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

    把它输入~/.vim/after/syntax/cpp.vim,你就可以开始了。

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

    【讨论】:

    • 哪个更好:\w\k
    • @Vitor: \w 更适合 C/C++ 类型名称的允许字符,并且不像 \k 那样可变。
    猜你喜欢
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 2016-12-30
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多