我在VimScript中编写了一个函数,根据一些计算,我希望为文本文件的不同部分设置多个语法区域。 在下面的示例中,我从第5行,第108行到第8行,第10列
进行了突出显示:syntax region Red start="\%108c\%5l" end="\%10c\%8l"
我使用的VimScipt代码如下所示:
call feedkeys(':syntax region Red start="\%' . col0 . 'c\%' . lin0 . 'l" end="\%' . col1 . 'c\%' . lin1 . 'l"' . "\<cr>")
这可以按预期工作,但会生成很多输出,因为feedkeys会回应它的作用。这种回声使我的代码非常变慢。
我的问题:
有没有办法让feedkeys()无声,或者可以在没有feedkeys()的情况下完成?
答案 0 :(得分:1)
为什么首先使用feedkeys()
?该功能仅用于模拟此处不需要的按键操作。
您必须使用:execute
执行从多个表达式拼凑的命令:
execute 'syntax region Red start="\%'.col0.'c\%'.lin0.'l" end="\%'.col1.'c\%'.lin1.'l"'
注意:移除间距以使整个命令适合而不滚动。