github-markdown-toc.go

github-markdown-toc.go

跨平台Markdown目录生成工具

github-markdown-toc.go是一个Go语言开发的Markdown目录生成工具。它能处理本地文件、远程URL和多文件,支持并行处理和正则解析。该工具无需额外依赖,提供目录深度控制和转义选项,兼容GitHub token和企业版。适合开发者和文档作者快速创建Markdown文档目录。

github-markdown-tocMarkdown目录生成Go语言GitHubGithub开源项目

github-markdown-toc

Go 报告卡 codecov Go 参考 MIT 许可证 GitHub 发布 (按日期最新) 端到端测试

这是基于 golang 实现的 github-markdown-toc 工具。

该实现的优点:

  • 无依赖(不需要 curl、wget、awk 等)
  • 跨平台(支持 Windows、Mac OS 等)
  • 使用正则表达式解析目录
  • 并行处理多个文档

注意:gh-md-toc 只有在您的机器连接到互联网时才能正常工作。

目录

gh-md-toc 创建

安装

预编译二进制文件

请查看发布页面的"下载"部分:

例如:

$ wget https://github.com/ekalinin/github-markdown-toc.go/releases/download/1.1.0/gh-md-toc.linux.amd64.tgz $ tar xzvf gh-md-toc.linux.amd64.tgz gh-md-toc $ ./gh-md-toc --version 1.1.0

从源码编译

您需要在操作系统中安装 golang:

$ make build $ ./gh-md-toc --help 用法: gh-md-toc [<标志>] [<路径>...] 标志: --help 显示上下文相关帮助(也可以尝试 --help-long 和 --help-man)。 --serial 以串行模式获取目录 --hide-header 隐藏目录头部 --hide-footer 隐藏目录尾部 --start-depth=0 从此级别开始包含。默认为 0(包含所有级别) --depth=0 包含的标题级别数。默认为 0(全部) --no-escape 不转义章节中的字符 --token=TOKEN GitHub 个人令牌 --indent=2 生成列表的缩进空格数 --debug 显示调试信息 --version 显示应用程序版本。 参数: [<路径>] 要获取目录的文档的本地路径或 URL。如果未输入,则从标准输入读取 MD。

Go 安装

您需要在操作系统中安装 golang:

go install "github.com/ekalinin/github-markdown-toc.go/cmd/gh-md-toc@latest"

Homebrew(仅限 Mac)

$ brew install github-markdown-toc

测试

$ make test 覆盖率: 28.8% 的语句 ok _~/projects/my/github-toc.go 0.003s

使用方法

标准输入

以下是从标准输入为 markdown 创建目录的示例:

cat ~/projects/Dockerfile.vim/README.md | ./gh-md-toc * [Dockerfile.vim](#dockerfilevim) * [截图](#截图) * [安装](#安装) * [或者使用 Pathogen:](#或者使用-pathogen) * [或者使用 Vundle:](#或者使用-vundle) * [许可证](#许可证)

本地文件

以下是为本地 README.md 创建目录的示例:

➥ ./gh-md-toc ~/projects/Dockerfile.vim/README.md 2015年3月22日 星期日 22:51:46 MSK 目录 ================= * [Dockerfile.vim](#dockerfilevim) * [截图](#截图) * [安装](#安装) * [或者使用 Pathogen:](#或者使用-pathogen) * [或者使用 Vundle:](#或者使用-vundle) * [许可证](#许可证)

远程文件

这里有一个示例,当您有一个像这样的 README.md 时:

这再简单不过了:

➥ ./gh-md-toc https://github.com/ekalinin/envirius/blob/master/README.md 目录 ============== * [envirius](#envirius) * [理念](#理念) * [特性](#特性) * [安装](#安装) * [卸载](#卸载) * [可用插件](#可用插件) * [使用方法](#使用方法) * [查看可用插件](#查看可用插件) * [查看每个插件的可用版本](#查看每个插件的可用版本) * [创建环境](#创建环境) * [激活/停用环境](#激活停用环境) * [在新的 shell 中激活](#在新的-shell-中激活) * [在同一 shell 中激活](#在同一-shell-中激活) * [获取环境列表](#获取环境列表) * [获取当前激活的环境](#获取当前激活的环境) * [在不启用环境的情况下在环境中执行操作](#在不启用环境的情况下在环境中执行操作) * [获取帮助](#获取帮助) * [获取某个命令的帮助](#获取某个命令的帮助) * [如何添加插件?](#如何添加插件) * [必需元素](#必需元素) * [plug_list_versions](#plug_list_versions) * [plug_url_for_download](#plug_url_for_download) * [plug_build](#plug_build) * [可选元素](#可选元素) * [变量](#变量) * [函数](#函数) * [示例](#示例) * [使用示例](#使用示例) * [依赖项](#依赖项) * [支持的操作系统](#支持的操作系统) * [测试](#测试) * [版本历史](#版本历史) * [许可证](#许可证) * [其他语言的README](#其他语言的readme)

就这么简单!现在你需要做的就是将控制台中的结果复制/粘贴到原始的 README.md 中。

这里是结果:

多个文件

它也支持多个文件:

➥ ./gh-md-toc \ https://github.com/aminb/rust-for-c/blob/master/hello_world/README.md \ https://github.com/aminb/rust-for-c/blob/master/control_flow/README.md \ https://github.com/aminb/rust-for-c/blob/master/primitive_types_and_operators/README.md \ https://github.com/aminb/rust-for-c/blob/master/unique_pointers/README.md * [Hello world](https://github.com/aminb/rust-for-c/blob/master/hello_world/README.md#hello-world) * [控制流](https://github.com/aminb/rust-for-c/blob/master/control_flow/README.md#control-flow) * [If](https://github.com/aminb/rust-for-c/blob/master/control_flow/README.md#if) * [循环](https://github.com/aminb/rust-for-c/blob/master/control_flow/README.md#loops) * [For 循环](https://github.com/aminb/rust-for-c/blob/master/control_flow/README.md#for-loops) * [Switch/Match](https://github.com/aminb/rust-for-c/blob/master/control_flow/README.md#switchmatch) * [方法调用](https://github.com/aminb/rust-for-c/blob/master/control_flow/README.md#method-call) * [基本类型和运算符](https://github.com/aminb/rust-for-c/blob/master/primitive_types_and_operators/README.md#primitive-types-and-operators) * [唯一指针](https://github.com/aminb/rust-for-c/blob/master/unique_pointers/README.md#unique-pointers)

自 0.4.0 版本起,多文档处理采用并行模式。 你可以通过在控制台中传递 --serial 选项来使用(旧的)串行模式:

$ ./gh-md-toc --serial ...

时间对比:

time (./gh-md-toc --serial README.md ../envirius/README.ru.md ../github-toc/README.md > /dev/null) real 0m1.200s user 0m0.040s sys 0m0.004s
time (./gh-md-toc README.md ../envirius/README.ru.md ../github-toc/README.md > /dev/null) real 0m0.784s user 0m0.036s sys 0m0.004s

组合使用

你可以轻松地结合这两种方式:

➥ ./gh-md-toc \ ~/projects/Dockerfile.vim/README.md \ https://github.com/ekalinin/sitemap.s/blob/master/README.md * [Dockerfile.vim](https://github.com/ekalinin/github-markdown-toc.go/blob/master/~/projects/Dockerfile.vim/README.md#dockerfilevim * [截图](https://github.com/ekalinin/github-markdown-toc.go/blob/master/~/projects/Dockerfile.vim/README.md#screenshot * [安装](https://github.com/ekalinin/github-markdown-toc.go/blob/master/~/projects/Dockerfile.vim/README.md#installation * [或者使用 Pathogen:](https://github.com/ekalinin/github-markdown-toc.go/blob/master/~/projects/Dockerfile.vim/README.md#or-using-pathogen * [或者使用 Vundle:](https://github.com/ekalinin/github-markdown-toc.go/blob/master/~/projects/Dockerfile.vim/README.md#or-using-vundle * [许可证](https://github.com/ekalinin/github-markdown-toc.go/blob/master/~/projects/Dockerfile.vim/README.md#license * [sitemap.js](https://github.com/ekalinin/sitemap.js/blob/master/README.md#sitemapjs) * [安装](https://github.com/ekalinin/sitemap.js/blob/master/README.md#installation) * [使用方法](https://github.com/ekalinin/sitemap.js/blob/master/README.md#usage) * [许可证](https://github.com/ekalinin/sitemap.js/blob/master/README.md#license) 起始深度 -------------- 使用 `--start-depth=INT` 来控制起始标题级别(即只包含从 `INT` 开始的级别) ```bash ➥ ./gh-md-toc --start-depth=1 ~/projects/Dockerfile.vim/README.md 目录 ================= * [或者使用 Pathogen:](#或者使用-pathogen) * [或者使用 Vundle:](#或者使用-vundle) [gh-md-toc](https://github.com/ekalinin/github-markdown-toc) 创建

深度

使用 --depth=INT 来控制在目录中包含多少级标题

➥ ./gh-md-toc --depth=1 ~/projects/Dockerfile.vim/README.md 目录 ================= * [Dockerfile\.vim](#dockerfilevim) * [截图](#截图) * [安装](#安装) * [许可证](#许可证)

不转义

➥ ./gh-md-toc ~/projects/my/Dockerfile.vim/README.md | grep Docker * [Dockerfile\.vim](#dockerfilevim) ➥ ./gh-md-toc --no-escape ~/projects/my/Dockerfile.vim/README.md | grep Docker * [Dockerfile.vim](#dockerfilevim)

GitHub 令牌

所有令牌都在这里

命令行参数示例:

➥ ./gh-md-toc --depth=1 --token=2a2dabe1f2c2399bd542ba93fe6ce70fe7898563 README.md 目录 ================= * [github\-markdown\-toc](#github-markdown-toc) * [目录](#目录) * [安装](#安装) * [测试](#测试) * [使用方法](#使用方法) * [许可证](#许可证)

环境变量示例:

GH_TOC_TOKEN=2a2dabe1f2c2399bd542ba93fe6ce70fe7898563 ./gh-md-toc --depth=1 README.md 目录 ================= * [github\-markdown\-toc](#github-markdown-toc) * [目录](#目录) * [安装](#安装) * [测试](#测试) * [使用方法](#使用方法) * [许可证](#许可证)

GitHub 企业服务器

如果你使用的是 GitHub 企业服务器,可以覆盖 API 的默认 URL:

GH_TOC_URL=https://api.github.mycompany.com ./gh-md-toc README.md

Bash/ZSH 自动补全

只需在你的 ~/.bashrc~/.zshrc 中添加一个简单的命令:

# 对于 zsh eval "$(gh-md-toc --completion-script-zsh)" # 对于 bash eval "$(gh-md-toc --completion-script-bash)"

Alpine Linux

Alpine Linux 默认使用 musl 而不是 glibc。如果你安装 binutils 并运行...

apk add binutils && \ readelf -l /path/to/gh-md-toc

...你会看到它依赖 /lib64/ld-linux-x86-64.so.2 作为其解释器。你可以通过在下载 Linux amd64 构建的同时安装 libc6-compat 来解决这个问题。

apk add libc6-compat

许可证

请参阅 LICENSE 文件。

编辑推荐精选

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成AI工具AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机AI图像热门
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

下拉加载更多