加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Vim中是否有用于浏览/导航XSLT代码的Ctags工具?

发布时间:2020-12-15 17:01:04 所属栏目:安全 来源:网络整理
导读:需要一种使用Vim轻松导航/浏览XSLT文件的方法. 类似于ctags可以与C/C++源代码一起使用的方式. 一个好的解决方案是允许只为自己安装脚本等或直接从Vim内部运行它们.仇恨不得不走出 vim只是为了搜索功能定义或“文本”搜索. 搜索了几个小时,想出了一些像’ack
需要一种使用Vim轻松导航/浏览XSLT文件的方法.
类似于ctags可以与C/C++源代码一起使用的方式.
一个好的解决方案是允许只为自己安装脚本等或直接从Vim内部运行它们.仇恨不得不走出 vim只是为了搜索功能定义或“文本”搜索.

搜索了几个小时,想出了一些像’ack’这样的优秀线索.
显然,这可以使用ack.vim与vim集成.然而要正确地测试它.

基本上我应该能够浏览包含其他.xsl文件的.xsl文件的迷宫,并使用函数,模板.有什么建议?

我发现kipelovets’和GuruM的答案很有用,并找出了结合他们建议的解决方案:

.ctags文件:

--langdef=xslt
--langmap=xslt:.xsl
--regex-xslt=/<xsl:template[^>]+name="([-a-zA-Z0-9_:]+)"( +mode="([^"]+)")?/1 2/n,namedtemplate/i
--regex-xslt=/<xsl:template[^>]+match="([^"]+)"( +mode="([^"]+)")?/1     2/m,matchedtemplate/i
--regex-xslt=/<xsl:apply-templates +select="([^"]{2,})"( +mode="([^"]+)")?/1 2/a,applytemplate/i
--regex-xslt=/<xsl:call-template +select="([^"]+)"( +mode="([^"]+)")?/1 2/c,calltemplate/i
--regex-xslt=/<xsl:variable[^>]+name="([-a-zA-Z0-9_]+)"/1/v,variable/i
--regex-xslt=/<xsl:function[^>]+name="([-a-zA-Z0-9_:]+)"/1/f,function/i
--regex-xslt=/<xsl:param[^>]+name="([-a-zA-Z0-9_:]+)"/1/p,parameter/i

vim标签栏设置(有些人可能觉得有用):

let g:tagbar_type_xslt = {
       'ctagstype' : 'xslt', 'kinds'     : [
       'n:templates (named)', 'm:templates (matched)', 'a:applied templates', 'c:called templates', 'f:functions', 'p:parameters', 'v:variables'
       ]
       }

它更好,但我仍然遇到的一些问题包括:

>按模式分组模板
>空格,例如模板/变量等属性之间的新行…
>确定变量和参数的范围,并应用模板和调用模板

>因此,如果您有多个具有相同名称但在不同模板中的变量,
不捕获它们所在模板的范围.

>评论模板,函数,变量和参数

未来尝试的更好方法:

>用于解析来自xslt的信息的正则表达式可以正确地执行此操作
>最好的解决方案可能是使用xslt本身编写自定义xslt标记生成器.

>这是jsctags对javascript的作用
>标签文件的格式看起来很简单……所以我接下来会尝试这个.

>见Tag File Format

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读