有没有办法访问存储在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
答案 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问题。