CTAGS解析PowerShell文件

命令行

ctags.exe --options=ctags.cnf -L *

ctags.cnf内容(此文件编写最好是UTF-8或ASCII的,因为ctags.exe有时会因为编码问题不能正确读入此文件)

--langdef=PowerShell
--langmap=PowerShell:.psm1.ps1
--regex-PowerShell=/^[\t ]*function[\t ]*([a-v]{5,7}:)?([a-z_-]+)/\2/m, method/i
-f ctags.txt

正则稍微说一下吧:

([a-v]{5,7}:)? 为匹配Scope,如private, local, global, script
([a-z_-]+)     为匹配函数名称,因没有在函数中使用数字的习惯,所以没有添加带有数字的模式,如果要带数字,则用([a-z0-9_-]+)
\2             让CTAGS把第二个括号所匹配的内容当作函数名来记录,如果改为\1后,当函数声明带有Scope时,CTAGS认为函数名为Scope,即把"private:", "local:", "scripts:"等等当作函数名称来记录
/i             代表忽略大小写


这个文件名(ctags.cnf)可以随便定义,不过默认ctags.exe会自动在当前路径或环境变量%CTAGS%(如果存在的话)中加载ctags.cnf这个文件,所以如果你用的此文件保存命令,在命令行可以这样写

ctags.exe -L*
哦,对了,使用文件定义命令时, -f <target name> 一定要写在文件里,在命令行中添加这个命令是无效的,会被ctags.exe认为二次定义而报错,从而使用 ctags为默认输出文件
如果没用文件来定义命令,在命令行写入时,正则一定要用引号引起来,因为正则中带有空格,会被ctags.exe认为是分隔符


此定义可以匹配的function格式:

function Script:Test-Path {......}
Function Test-Path {......}
    FUNCTION TEST {......}

我在UltraEdit中使用CTAGS时,要跳转时需要选中完整的函数名称,因为UltraEdit认为 是隔离符号而非函数名称的一部分


我只是定义了如何搜索function,没定义怎样搜索Variable,因Variable名字重复率高且定义格式又有很多种(主要是人太懒了)。

如果你想Variable的正则,自ctags.cnt中另起一新行写入下面的参数即可

--regex-PowerShell=你写的Variable正则

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值