当前位置: 首页 > news >正文

exuberant ctags 支持 typescript 解析

exuberant ctags 支持 typescript 解析

exuberant ctags 是 GNU ctags 的替代品。 最近在看 nodejs 的项目代码,老规矩用它生成 tags 文件在 vim 中看。 可惜对于项目中的 typescript 文件,无法识别及解析。

查了下是否能让 ctags 支持 typescript 分析。找到了下面的库。

https://github.com/jb55/typescript-ctags/tree/master

步骤:

  1. 在 HOME 目录下创建 .ctags 文件。
  2. .ctags 文件中输入下面的内容。
--langdef=typescript
--langmap=typescript:.ts.tsx
--regex-typescript=/^[ \t]*(export[ \t]+([a-z]+[ \t]+)?)?class[ \t]+([a-zA-Z0-9_$]+)/\3/c,classes/
--regex-typescript=/^[ \t]*(declare[ \t]+)?namespace[ \t]+([a-zA-Z0-9_$]+)/\2/c,modules/
--regex-typescript=/^[ \t]*(export[ \t]+)?module[ \t]+([a-zA-Z0-9_$]+)/\2/n,modules/
--regex-typescript=/^[ \t]*(export[ \t]+)?(default[ \t]+)?(async[ \t]+)?function(\*)?[ \t]+([a-zA-Z0-9_$]+)/\5/f,functions/
--regex-typescript=/^[ \t]*export[ \t]+(var|let|const)[ \t]+([a-zA-Z0-9_$]+)/\2/v,variables/
--regex-typescript=/^[ \t]*(var|let|const)[ \t]+([a-zA-Z0-9_$]+)[ \t]*=[ \t]*function[ \t]*[*]?[ \t]*\(\)/\2/v,varlambdas/
--regex-typescript=/^[ \t]*(export[ \t]+)?(public|protected|private)?[ \t]*(static[ \t]+)?(abstract[ \t]+)?(((get|set|readonly)[ \t]+)|(async[ \t]+[*]*[ \t]*))?(#?[a-zA-Z1-9_$]+)[ \t]*[:(]/\9/m,members/
--regex-typescript=/^[ \t]*(export[ \t]+)?interface[ \t]+([a-zA-Z0-9_$]+)/\2/i,interfaces/
--regex-typescript=/^[ \t]*(export[ \t]+)?type[ \t]+([a-zA-Z0-9_$]+)/\2/t,types/
--regex-typescript=/^[ \t]*(export[ \t]+)?enum[ \t]+([a-zA-Z0-9_$]+)/\2/e,enums/
--regex-typescript=/^[ \t]*import[ \t]+([a-zA-Z0-9_$]+)/\1/I,imports/

完成后保存,使用如下命令,查看 ctags 支持的语言。

ctags --list-languages

增加了对 typescript 解析,生成 tags 文件后,可以代码跳转 OK!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 自动驾驶-机器人-slam-定位面经和面试知识系列05之常考公式推导(02)
  • 什么是埋点?前端如何埋点?
  • 速盾:分享一些防御 DDoS 攻击的措施
  • 爬虫 APP 逆向 ---> 粉笔考研
  • 请你谈谈:spring bean的生命周期 - 阶段5:BeanPostProcessor前置处理-自定义初始化逻辑-BeanPostProcess后置处理
  • Profinet从站转TCP/IP协议转化网关(功能与配置)
  • 使用DuiLib进行UI开发的虚函数解析及控件绑定、响应与消息处理
  • selenium----CSS表达式选择元素
  • PDF解锁网站
  • 数据库DDL | 增 删 改 操作 | 对数据库数据表
  • 【Java基础语法】字符修改,以及equals的用法
  • JS逆向高级爬虫
  • 【BUG】已解决:ERROR: Failed building wheel for jupyter-nbextensions-configurator
  • 【Linux】文件系统|CHS寻址|LBA逻辑块|文件索引|inode|Date block|inodeBitmap|blockBitmap
  • Python3网络爬虫开发实战(4)数据的存储
  • [译]前端离线指南(上)
  • Angular 响应式表单之下拉框
  • Angular6错误 Service: No provider for Renderer2
  • JavaScript 基础知识 - 入门篇(一)
  • jdbc就是这么简单
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • unity如何实现一个固定宽度的orthagraphic相机
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 从0实现一个tiny react(三)生命周期
  • 服务器之间,相同帐号,实现免密钥登录
  • 关于Java中分层中遇到的一些问题
  • 回顾2016
  • 看域名解析域名安全对SEO的影响
  • 聊聊redis的数据结构的应用
  • 小程序测试方案初探
  • 延迟脚本的方式
  • NLPIR智能语义技术让大数据挖掘更简单
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​ubuntu下安装kvm虚拟机
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #if和#ifdef区别
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (27)4.8 习题课
  • (3)选择元素——(17)练习(Exercises)
  • (C#)获取字符编码的类
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (阿里云万网)-域名注册购买实名流程
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (强烈推荐)移动端音视频从零到上手(上)
  • (译) 函数式 JS #1:简介
  • .net 调用海康SDK以及常见的坑解释
  • .net 后台导出excel ,word
  • .net 连接达梦数据库开发环境部署