gpt4 book ai didi

postgresql - '( 在 Vim 语法区域中有什么特殊意义吗,特别是在 pgsql.vim 中?

转载 作者:行者123 更新时间:2023-11-29 12:12:23 26 4
gpt4 key购买 nike

在此(颇受欢迎)Vim syntax file for PostgreSQL ,有数千行遵循这种模式:

syn region pgsqlFunction start="abs'(" end=")" contains=ALL
syn region pgsqlFunction start="abstime'(" end=")" contains=ALL
syn region pgsqlFunction start="abstimeeq'(" end=")" contains=ALL
...

使用 Vim 7.4,这对我来说根本不起作用,除非我真的写了 abs'(2.3)(这是 SQL 的语法错误)。删除左括号前的单引号可以解决问题。

由于这是 Github 上的一个项目,我通常只是修复错误并提交一个 pull request,但我正在犹豫,因为这个文件以 '( 格式存在了多长时间. 它在 GitHub 上经历了三年的 29 次修订,还可以找到该文件的一些其他版本 herehere 。pgsqlFunction 区域 block 构成了文件的绝大部分,因此很难相信没有人注意到它甚至不起作用。

这更有可能是我这边的问题。我可以让这种格式工作吗,还是它真的坏了?

最佳答案

语法文件有问题。 syn-region 的开始和结束属性在 vim 中只是魔法 (:h magic) 正则表达式,与用户设置无关。 (:h 同步模式)。根据文档的语法文件应该尽可能可移植,因此您的设置不应干扰文件的输出。

Start 只是定义模式的开始。所以在 start="abs'(" 的情况下,它必须以 abs'( 开头,它在 vim 正则表达式中与 abs'( 完全匹配。

因此语法文件因 pgsqlFunction 突出显示而损坏。

关于postgresql - '( 在 Vim 语法区域中有什么特殊意义吗,特别是在 pgsql.vim 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26812515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com