scripting - 是否可以让 Vim 语法文件命令跨越多行?

标签 scripting syntax-highlighting vim

我正在尝试创建一个语法文件,我想为不同的颜色突出显示创建一些关键字组(例如,保留字、运算符等将是不同的颜色)。我可以通过执行以下两个选项之一来使其工作:

选项1

syn keyword MyLangOperators operator1 operator2 operator3
syn keyword MyLangOperators operator4 operator5 operator6

syn keyword MyLangReserved reserved1 reserved2 reserved3
syn keyword MyLangReserved reserved4 reserved5 reserved6

这还不错,但是如果我试图按字母顺序保留它们,一旦保留/运算符等的数量增加到那里,它就会变得非常困惑。特别是如果您需要在中间某处添加新的。

选项 2
syn keyword MyLangOperators operator1
syn keyword MyLangOperators operator2
syn keyword MyLangOperators operator3
syn keyword MyLangOperators operator4
syn keyword MyLangOperators operator5
syn keyword MyLangOperators operator6

syn keyword MyLangReserved reserved1
syn keyword MyLangReserved reserved2
syn keyword MyLangReserved reserved3
syn keyword MyLangReserved reserved4
syn keyword MyLangReserved reserved5
syn keyword MyLangReserved reserved6

此选项稍后添加保留/运算符要容易得多,因为按字母顺序保留它们很容易。但是,每一行都有很多重复的文本(即 syn 关键字 [groupname])。

有什么可能的方法可以跨越多行命令吗?可能是这样的:
syn keyword MyLangOperators ~
    operator1 ~
    operator2 ~
    operator3 ~
    operator4 ~
    operator5 ~
    operator6

syn keyword MyLangReserved ~
    reserved1 ~
    reserved2 ~
    reserved3 ~
    reserved4 ~
    reserved5 ~
    reserved6

在这种情况下,波浪号 (~) 将向 Vim 编辑器发出信号,指示命令继续到下一行。

有没有这样的事情,还是我坚持使用选项 1 或 2(很可能我会选择 2)?

最佳答案

这样就可以了( :help line-continuation )

syn keyword MyLangOperators
    \ operator1
    \ operator2
    \ operator3
    \ operator4
    \ operator5
    \ operator6

关于scripting - 是否可以让 Vim 语法文件命令跨越多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1562507/

相关文章:

powershell - 为什么我的PowerShell脚本不遵守步骤顺序?

windows - VBS 和正则表达式

macos - 可以语法高亮差异文件的 Mac 原生文本编辑器?

editor - Atom语法突出显示指南

Vim命令: how to select a word under cursor in normal mode

linux - 在 vim 插入模式下从左向右移动光标时随机出现在屏幕上的字符

linux - 如何在 Linux 中用新行替换 Pipe?

sql - 使用哪种语言编写 PostgreSQL 脚本?

html - Notepad++ 和嵌入式 Perl - 特定标记内的语法突出显示

vimscript 检测管道输入