Vim:在函数中定义语法规则?

Vim:在函数中定义语法规则?,vim,Vim,我希望在函数中动态创建语法规则。例如,类似于: fun! DoStuff(word) syntax match Error '\<'.word.'\>' contained ... other stuff ... endf 有趣!多斯塔夫(字) 包含语法匹配错误“\” ... 其他东西。。。 endf 但是,显然,这不起作用。那么…我该怎么做呢 *:Vim脚本仍然是巫毒,就我而言很有趣!多斯塔夫(字) fun! DoStuff(word) exec 'sy

我希望在函数中动态创建语法规则。例如,类似于:

fun! DoStuff(word)
    syntax match Error '\<'.word.'\>' contained
    ... other stuff ...
endf
有趣!多斯塔夫(字)
包含语法匹配错误“\”
... 其他东西。。。
endf
但是,显然,这不起作用。那么…我该怎么做呢

*:Vim脚本仍然是巫毒,就我而言

很有趣!多斯塔夫(字)
fun! DoStuff(word)
    exec 'syntax match Error /\<'.a:word.'\>/ contained'
endf
exec“语法匹配错误/\/contained” endf
出现问题的原因不是函数中不能使用
syn match
,而是当它按照您描述的方式使用时,它是按字面意思输入的。我不确定实现的细节是什么,但我希望它将模式视为
\Awesome,谢谢(注:我编辑了答案,因为我在前往“接受”检查的途中意外单击了“向下投票”箭头,我无法在不编辑的情况下将其更改为向上投票)。
'syntax match Error /\<' . a:word . '\>/ contained'
'syntax match Error /\<foobar\>/ contained'
:command! -nargs=1 DoStuff syn keyword Error <args> contained
:DoStuff MyKeyword
function! DoStuff(word)
    exec 'syntax keyword Error ' . a:word . ' contained'
endfunction
:help :syn-keyword
:help :syn-match
:help :command
:help :command-nargs
:help :function
:help :exec
exec 'syntax keyword Error ' . a:word . ' contained'
exec 'syntax keyword Error' a:word 'contained'