提取用于在vim中定义语法对象的正则表达式

时间:2016-09-14 15:12:49

标签: vim vim-syntax-highlighting

有没有办法访问存储在vim中的语法对象的正则表达式定义?我宁愿不必解析语法文件或关闭输出

:syntax list vimFunc

--- Syntax items ---
vimFunc        xxx match /\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%([a-zA- Z0-9_.]\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(/  contains=vimFuncName,vimUserFunc,vimExecute 
               links to vimError

1 个答案:

答案 0 :(得分:0)

用于定义语法组的正则表达式。

要获得正确的语法文件,您只需要查看:scriptnames,因为:syntax list <group>仅适用于当前文件类型语法中的组。您获得的文件类型为set ft?(例如filetype=vim),然后在:scriptnames中使用/syntax/前缀(转为/usr/share/vim/vim74/syntax/vim.vim搜索该文件类型在我的系统上。)

使用该技术,我发现定义正则表达式匹配的行是:

syn match vimFunc       "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%([a-zA-Z0-9_]\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*("      contains=vimFuncName,vimUserFunc,vimExecute

其中(扣除引号)与:syntax list vimFunc的输出相同。

无耻的beta堆栈交换网站营销:我们vi.SE特别针对Vim问题。