提问人:spraff 提问时间:11/11/2023 更新时间:11/11/2023 访问量:47
.vim/syntax/sql.vim:处理“*.sql”的 BufRead 自动命令时检测到错误
.vim/syntax/sql.vim: Error detected while processing BufRead Autocommands for "*.sql"
问:
我尝试为 sql 保存这个 vim 语法文件,但是当我在 vim 中打开一个 sql 文件时,我得到了很多很多这样的东西:
Error detected while processing BufRead Autocommands for "*.sql"..function dist#ft#SQL[4]..FileType
Autocommands for "*"..Syntax Autocommands for "*"..function <SNR>4_SynSet[25]..script /home/bernie/.
vim/syntax/sql.vim:
line 17:
E117: Unknown function: vim_highlight#core#options#getValue
line 18:
E117: Unknown function: vim_highlight#core#options#getValue
line 22:
E121: Undefined variable: s:case_sensitive
line 29:
E121: Undefined variable: g:vim_highlight#core#options#default#common
E116: Invalid arguments for function extend
line 30:
E121: Undefined variable: g:vim_highlight#core#options#default#region
E116: Invalid arguments for function extend
line 35:
E117: Unknown function: vim_highlight#core#syntax#match
Error detected while processing BufRead Autocommands for "*.sql"..function dist#ft#SQL[4]..FileType
Autocommands for "*"..Syntax Autocommands for "*"..function <SNR>4_SynSet[25]..script /home/bernie/.
vim/syntax/sql.vim[156]..function <SNR>29_SelectStmt:
line 1:
E117: Unknown function: vim_highlight#core#syntax#predicat
line 2:
E121: Undefined variable: l:predicat
line 5:
等等等等
Here's the first part of the linked syntax file
" Vim syntax file for SQL
" Language: SQL standard / Support for drivers specifics
" Maintainer: Julien Rosset <[email protected]>
"
" URL: https://github.com/vim-highlight/sql/
" Version: 0.0.1
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
" Initialize options {{{
let s:driver = vim_highlight#core#options#getValue('driver' , '')
let s:case_sensitive = vim_highlight#core#options#getValue('case_sensitive', 0)
" }}}
" Case matching {{{
if s:case_sensitive
syntax case match
else
syntax case ignore
endif
" }}}
call extend(g:vim_highlight#core#options#default#common, { 'skipempty': 1, 'skipnl': 1, 'skipwhite': 1, 'contained': 1 })
call extend(g:vim_highlight#core#options#default#region, { 'keepend': 1 })
let s:predicats = { 'root': 'sql' }
由于这是某人公开发布的语法文件,看到这么多错误让我觉得我的 vim 设置一定存在一些更广泛的问题。我使用的是 8.2.1847 版。
我需要什么才能使附加的 vim 语法文件正常工作?
答:
1赞
romainl
11/11/2023
#1
---编辑---
首先,如评论中所述,您链接到的文件:
https://github.com/JessicaKMcIntosh/Vim/blob/master/syntax/sql.vim
不是你问题正文中的那个。粘贴文件的标头:
" Vim syntax file for SQL
" Language: SQL standard / Support for drivers specifics
" Maintainer: Julien Rosset <[email protected]>
"
" URL: https://github.com/vim-highlight/sql/
" Version: 0.0.1
和链接文件的标头:
" Vim syntax file
" Language: SQL with SQLite and other additions.
" Maintainer: Jessica K McIntosh AT gmail DOT com
" Last Changed: Thu Jan 23 06:00 PM 2014 EST
绝对不同。
其次,很容易看出问题中的错误来自您粘贴的文件,而不是来自链接的文件。我的意思是,以下错误:
line 17:
E117: Unknown function: vim_highlight#core#options#getValue
明确指出:
" pasted file
let s:driver = vim_highlight#core#options#getValue('driver' , '')
而不是:
" linked file
endif
右?
因此,链接文件及其父存储库与手头的问题 100% 无关,即......
---结束编辑---
该文件不是独立的。它不是从某人的配置中获取的一些随机文件。它属于一个完整的插件,并且依赖于下面的其他几个文件,因此您必须安装整个文件才能使其正常工作。autoload/vim_highlight/core
为此,请使用您喜欢的运行时路径/插件管理器,或者使用本机功能::help packages
~/.vim/pack/<name>/start/sql
评论
0赞
spraff
11/11/2023
谢谢,但鉴于我链接的存储库,我不明白如何解释您的答案。它的 README 和结构似乎不相关(例如,存储库中没有)。你怎么知道这个语法文件需要什么插件?(我不想在完整的存储库中使用 tcl 等东西)autoload
0赞
romainl
11/11/2023
链接的文件及其存储库无关紧要。请参阅我的编辑。
评论
sql.vim
与您引用的内容有很大不同。它以“维护者:Jessica K McIntosh”开头,没有提到 .OTOH github.com/vim-highlight/sql 的存储库具有目录。您刚刚混淆了两个不同的语法文件。vim_highlight
autoload