gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:21:08 24 4
gpt4 key购买 nike

需要一种使用 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
  • 关于xslt - 是否有类似 Ctags 的工具用于在 Vim 中浏览/导航 XSLT 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6466928/

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