Mac系统R语言环境搭建:从安装到配置的完整指南
1. 项目概述为什么要在Mac上搭建R语言环境如果你正在读这篇文章大概率是刚接触数据分析、统计学或者生物信息学听说了R语言的大名想在你的Mac上把它跑起来。作为一个在数据科学领域摸爬滚打了十多年的老手我完全理解你的感受——面对一个新的编程语言和环境第一步“安装”往往就是最大的拦路虎。网上的教程要么过于简略跳过了关键步骤要么版本老旧照着做一堆报错。特别是对于Mac用户虽然系统本身对开发者友好但在安装一些科学计算环境时依然会遇到诸如权限、路径、依赖包冲突等特有的“坑”。这篇教程的目的就是为你提供一个超完整、零遗漏、面向新手的保姆级指南。我们不仅仅要完成R和RStudio的安装更要理解每一步背后的逻辑确保你搭建的环境是干净、稳定、可长期使用的。我会带你从最基础的官网下载开始一步步走过安装、配置、验证、乃至第一个数据分析脚本的运行。过程中我会穿插大量我亲身踩过的“坑”和总结出的“最佳实践”这些是你在官方文档里绝对看不到的干货。简单来说完成本教程后你将获得一个功能完整的R语言运行环境。一个强大且美观的集成开发环境RStudio。清晰的环境配置思路避免未来安装扩展包时出现各种诡异错误。直接上手进行简单数据分析的能力。无论你是社科专业的学生、金融领域的分析师还是生物医学的研究者这套环境都是你利用R进行数据探索、统计建模和可视化绘图的起点。我们开始吧。2. 核心组件解析R与RStudio的角色与关系在动手安装之前花几分钟搞清楚我们要安装的到底是什么以及它们之间如何协作能让你在后续遇到问题时更快地定位和解决。很多新手容易混淆这两个概念。2.1 R语言强大的统计计算引擎你可以把R语言本身想象成一台汽车的发动机。它是一个开源的编程语言和软件环境专门为统计计算和图形显示而设计。当你写下一条计算命令比如mean(c(1,2,3,4,5)) 是R这个“发动机”在执行计算并返回结果3。官网与下载R语言的官方发布站点是The Comprehensive R Archive Network (CRAN)。对于Mac用户CRAN提供了编译好的.pkg安装包这是最推荐的方式。核心功能R的核心是它的解释器和基础功能库。但它的真正威力来自于海量的扩展包Packages比如用于数据处理的dplyr、用于绘图的ggplot2、用于机器学习的caret等。这些包就像发动机的各类配件让这台车能跑、能载货、能越野。交互方式安装好R后你可以在macOS的“终端”或“R.app”图形界面中直接运行它。但这就像直接操作发动机——功能强大但不够友好不适合日常开发和复杂项目管理。2.2 RStudio高效便捷的集成开发环境如果R是发动机那么RStudio就是包裹着发动机的完整汽车附带方向盘、仪表盘、空调和音响。它是一个专门为R语言设计的集成开发环境。核心价值RStudio将代码编辑器、控制台、工作区浏览器、图形显示、帮助文档、版本控制等工具集成在一个直观的界面中。你不再需要来回切换多个窗口。提高效率它提供了代码自动补全、语法高亮、项目管理、调试工具等一系列功能能极大提升你编写和调试R代码的效率。并非必需但强烈推荐理论上没有RStudio你也能使用R。但对于99%的用户尤其是初学者和日常工作者RStudio是必不可少的生产力工具。它让数据科学工作变得流畅和愉悦。关系总结必须先安装R发动机再安装RStudio汽车。RStudio只是一个“外壳”或“驾驶舱”它需要调用你已经安装好的R来执行所有计算任务。如果你只安装RStudio而没有安装R它是无法工作的。3. 超详细安装实战从零到一的完整过程接下来我们进入实操环节。请严格按照顺序操作。3.1 第一步安装R语言访问CRAN镜像站点 打开浏览器访问CRAN的官方网站。由于网络原因直接访问主站可能较慢建议选择中国的镜像站点。例如你可以使用清华大学的镜像https://mirrors.tuna.tsinghua.edu.cn/CRAN/。在页面顶部找到并点击“Download R for macOS”。选择正确的安装包 进入macOS下载页面后你会看到两个主要选项R-X.X.X.pkg 这是最新版本R的安装包。X.X.X代表版本号如R-4.3.2.pkg。对于绝大多数用户直接下载这个最新版的pkg文件即可。tools 包含一些编译工具普通用户不需要。旧版本链接 除非有特殊的包兼容性要求否则不要使用旧版本。注意 请务必下载与你的macOS系统兼容的版本。对于近几年购买的Mac无论是Intel芯片还是Apple Silicon芯片下载最新的通用版本通常标注为“Universal”或针对macOS 10.13及以上版本都没有问题。Apple Silicon MacM1/M2/M3芯片可以原生运行通用版本或ARM64版本性能最佳。运行安装程序 下载完成后在“下载”文件夹中找到R-X.X.X.pkg文件双击打开。安装过程非常简单就像安装任何其他Mac软件一样一路点击“继续”、“同意”、“安装”。系统可能会要求你输入管理员密码这是为了将R安装到系统级目录/Library/Frameworks/R.framework下。安装完成后你可以在“应用程序”文件夹里找到一个名为R.app的图标。你可以双击运行它这会打开R的原始图形界面。不过我们主要用它来验证安装日常使用将通过RStudio。验证安装 打开macOS的“终端”应用可以在“应用程序”-“实用工具”中找到。 在终端中输入以下命令并按回车R --version如果安装成功你会看到类似下面的输出显示了R的版本号和相关信息R version 4.3.2 (2023-10-31) -- Eye Holes Copyright (C) 2023 The R Foundation for Statistical Computing Platform: aarch64-apple-darwin20 (64-bit) ...看到版本信息恭喜你R语言“发动机”已经就位。3.2 第二步安装RStudio IDE访问RStudio官网 打开浏览器访问 RStudio 的官方网站。在首页找到“Download”选项选择“RStudio Desktop”的免费开源版本。下载macOS版本 页面会自动检测你的系统并推荐下载RStudio-YYYY.MM.X-dmg文件例如RStudio-2023.12.0-369.dmg。点击下载。安装RStudio下载完成后双击.dmg磁盘映像文件。在弹出的窗口中将RStudio.app图标拖拽到旁边的Applications文件夹快捷方式中。这就完成了安装。完成后可以弹出磁盘映像在访达边栏右键点击并选择“推出”。首次运行与配置 在“应用程序”文件夹中找到RStudio并打开它。首次运行设置 RStudio会自动寻找系统中已安装的R版本。通常情况下它都能正确找到我们刚刚安装的R。你可以在菜单栏点击RStudio - Settings - General查看和确认“R version”是否正确。界面熟悉 打开后你会看到默认的四窗格界面左上 脚本编辑器写代码的地方。左下 控制台执行代码、显示结果的地方。右上 工作区/历史记录。右下 文件/图形/包/帮助查看器。3.3 第三步关键配置与优化安装完成只是第一步合理的初始配置能让后续使用事半功倍。设置CRAN镜像加速包下载 R默认从全球的CRAN服务器下载包国内访问可能很慢。我们需要将其设置为国内镜像。在RStudio中点击菜单栏Tools - Global Options...。选择Packages选项卡。在 “CRAN mirror” 下拉框中选择一个中国的镜像例如China (Beijing 4) [https] - TUNA Team, Tsinghua University或China (Hefei) [https] - USTC。点击Apply和OK。安装第一个扩展包并测试环境 让我们用安装一个最常用包的方式来测试整个环境是否通畅。在RStudio左下角的控制台中输入以下命令install.packages(tidyverse)这个命令会安装一套包含ggplot2,dplyr,tidyr等在内的强大数据科学工具包。安装过程会持续几分钟并输出大量信息。如果最终没有出现红色的错误信息而是提示包被成功解压并安装说明你的网络、镜像设置和编译环境都是正常的。创建并运行你的第一个R脚本在RStudio中点击File - New File - R Script 会打开一个新的脚本编辑器。在第一行输入print(Hello, R World!)按Ctrl Enter(或Cmd Enter) 执行这一行。你会在控制台看到输出[1] Hello, R World!。点击保存按钮将脚本命名为my_first_script.R保存到你喜欢的位置建议专门建立一个项目文件夹如~/Documents/R_Projects。至此一个功能完整、配置优化的R语言开发环境已经在你的Mac上搭建成功。4. 深度配置与高级话题基础环境搭建好后为了应对更复杂的数据科学项目我们还需要了解一些高级配置和概念。4.1 包管理install.packages() 的陷阱与解决方案直接用install.packages()虽然方便但在长期使用中会带来问题依赖冲突 包A需要依赖库版本1.0包B需要版本2.0同时安装它们可能导致其中一个无法工作。环境污染 所有包都安装在同一个全局库路径下难以隔离不同项目所需的不同包版本。难以复现 半年后你的脚本可能因为某个包升级了不兼容的版本而无法运行。解决方案使用 renv 进行项目管理renv是一个为R项目提供可重复环境的包。它类似于Python的virtualenv。初始化 在RStudio中打开你的项目目录在控制台运行renv::init()。这会在项目内创建一个独立的R包库。安装包 之后在这个项目内使用install.packages()包会被安装到项目本地不影响全局环境。快照与恢复renv::snapshot()会将当前项目使用的所有包及其版本号记录到renv.lock文件中。将这个文件分享给同事或在另一台电脑上运行renv::restore()就能精确还原完全相同的包环境完美解决可复现性问题。实操心得 对于任何严肃的数据分析或科研项目从一开始就使用renv是一个非常好的习惯。它前期增加了一点学习成本但后期在协作和复现时节省的时间是巨大的。4.2 性能与兼容性Apple Silicon Mac的特别注意事项如果你使用的是搭载M1/M2/M3芯片的Mac你会享受到原生ARM64应用带来的性能优势和低功耗。我们的安装流程已经确保了这一点因为从R 4.1.0左右开始官方就提供了通用安装包。但仍有细节需要注意终端架构 默认情况下你通过RStudio或终端运行的R都是ARM64原生版本。你可以在R控制台输入.Platform$pkgType来确认如果返回mac.binary.arm64或mac.binary.big-sur-arm64 说明正在运行原生版本。旧包兼容性 绝大多数CRAN包都已提供ARM64原生版本。极少数尚未更新的包R会自动通过其内置的“Rosetta 2”兼容层以x86_64模式编译安装这对用户是透明的无需干预。Homebrew 安装方式 有些高级用户喜欢通过Homebrew安装Rbrew install --cask r。这种方式同样支持ARM64且更新可能更及时。但对于初学者我依然推荐官方的pkg安装包更简单直接避免Homebrew环境可能带来的其他复杂性。4.3 扩展你的工具链常用辅助工具推荐一个高效的数据科学家除了核心的R和RStudio还会配备一些“瑞士军刀”式的工具。Git 与 GitHub 版本控制是必备技能。在Mac上安装Git非常容易可通过Homebrewbrew install git或从官网下载安装程序。在RStudio中完美集成了Git功能你可以直接进行提交、推送、拉取等操作管理你的代码历史。Quarto 这是RStudio公司推出的新一代科学和技术文档发布系统可以看作是R Markdown的现代化继承者。它支持用R、Python、Julia等生成精美的报告、网站、博客甚至书籍。在RStudio中可以直接安装和使用。运行install.packages(quarto)并安装Quarto命令行工具你的分析报告将提升一个档次。终端强化 虽然RStudio功能强大但有些任务在终端中更高效。比如批量处理文件、使用make管理复杂分析流程等。熟悉基本的终端命令ls,cd,cp,grep等会让你如虎添翼。可以考虑使用iTerm2替代系统默认终端功能更强大。5. 常见问题与故障排除实录即使按照教程一步步来你也可能会遇到一些问题。下面是我总结的一些最常见的情况及其解决方法。5.1 安装包时失败网络、权限与依赖这是新手遇到最多的问题通常发生在运行install.packages()时。错误现象可能原因解决方案‘lib’ is not writable没有写入R系统库目录的权限。不要使用sudo正确的做法是让R在用户目录下创建个人库。当首次安装包遇到此提示时R通常会询问“Would you like to use a personal library instead?”选择“Yes”。你也可以手动在终端运行R然后执行Sys.getenv(HOME)查看家目录R会自动在类似~/Library/R/arm64/4.3/library的路径下创建个人库。installation of package ‘XXX’ had non-zero exit status缺少系统级依赖或者源代码编译失败。1.安装Xcode命令行工具在终端运行xcode-select --install。这是编译许多包的前提。2.安装Homebrew并安装依赖对于某些复杂的包如涉及地理空间计算的sf涉及图像处理的magick可能需要通过Homebrew安装系统库。例如安装sf包前可能需要brew install gdal proj geos。具体依赖需要查看该包在CRAN上的说明。下载速度极慢或超时CRAN镜像设置不正确或网络问题。确保已按照3.3 第一步正确设置了国内的CRAN镜像如清华或中科大。可以在R中运行options(repos)查看当前镜像地址。package ‘XXX’ is not available for this version of R你尝试安装的包尚未为你当前版本的R提供预编译的二进制包尤其是macOS的ARM64版本。1.等待通常几天到几周内维护者会上传新版本。2.从源码安装尝试install.packages(“XXX”, type “source”)。这要求你的电脑有完整的编译环境Xcode命令行工具。3.从GitHub安装如果该包在GitHub上活跃可以使用remotes::install_github(“username/reponame”)安装开发版。5.2 RStudio无法启动或找不到R问题 打开RStudio时提示 “The R session failed to start” 或 “Unable to locate R installation”。解决首先确认R已正确安装在终端能运行R --version。打开RStudio进入RStudio - Settings - General。在 “R version” 部分如果显示为空或错误点击 “Change…” 按钮。在弹出的窗口中RStudio通常会自动扫描到可用的R版本。如果未找到你可以手动指向R的框架路径/Library/Frameworks/R.framework/Resources或/usr/local/bin/R如果通过Homebrew安装。选择正确的R可执行文件即可。5.3 更新R版本后的问题当你安装新版本的R后旧版本的个人库~/Library/R/...下的包不会被自动迁移。最佳实践 将重要的包列表保存下来在新环境中重新安装。在旧版本R中运行old_packages - installed.packages()[, “Package”] 然后writeLines(old_packages, “r_packages.txt”)保存包名列表。安装新版本R和RStudio后在新R中运行new_packages - readLines(“r_packages.txt”) 然后install.packages(new_packages)批量安装。注意 有些包可能需要从源码重新编译。使用renv的项目则完全不受R版本更新的影响在项目目录内运行renv::activate()和renv::restore()即可。5.4 图形设备相关问题特别是ggplot2绘图时问题 使用ggplot2绘图时图形窗口不弹出或保存图片时出错。解决Mac上R的默认图形设备是quartz()。确保其正常工作。可以尝试在控制台直接运行plot(1:10)测试基础绘图。如果在RStudio中图形默认显示在右下角的“Plots”窗格。你可以点击“Zoom”放大或使用“Export”按钮保存。对于保存高分辨率图片推荐使用ggsave()函数并指定正确的设备如ggsave(“plot.png”, device “png”, dpi 300, width 8, height 6)。如果遇到字体显示问题可能需要安装showtext或ragg包来获得更好的图形渲染支持。环境搭建是万里长征的第一步但也是最关键的一步。一个稳定、配置得当的环境能让你在后续的学习和工作中心无旁骛。希望这篇超详细的指南能帮你扫清所有障碍。如果在实践中遇到了本教程未涵盖的古怪问题记住一个终极排查思路仔细阅读错误信息将其复制到搜索引擎中大概率已经有前辈遇到过并给出了解决方案。R社区非常活跃和友好你永远不是一个人在战斗。现在你的Mac已经准备好成为一台强大的数据科学工作站了去开始你的探索吧。

相关新闻

使用OpenSSL制作SAN证书:多域名HTTPS安全配置详解

使用OpenSSL制作SAN证书:多域名HTTPS安全配置详解

1. 项目概述:从单域名到多域名的安全升级在构建现代Web服务时,HTTPS早已是标配。但你是否遇到过这样的场景:一个应用需要同时通过www.example.com和example.com提供服务,或者一个API服务需要同时支持api.service.com和service.int…

2026/10/13 16:17:40 阅读更多 →
AI如何重塑本科论文写作:智能文献检索与格式校对实践

AI如何重塑本科论文写作:智能文献检索与格式校对实践

1. 项目概述:AI如何重塑本科论文写作体验第一次写本科论文的新手常会遇到这样的困境:面对空白的文档不知从何下笔,文献综述像大海捞针,格式调整耗费数小时却依然不符合要求。三年前我指导表弟修改毕业论文时,亲眼见证了…

2026/10/14 6:17:24 阅读更多 →
2026论文分阶段工具排行榜|开题/写作/降重/查重/答辩全覆盖✅

2026论文分阶段工具排行榜|开题/写作/降重/查重/答辩全覆盖✅

很多人选论文工具翻车,根本原因只有一个:用一个工具搞定全流程,选错阶段直接报废。 有的工具查重强但降重必翻车,有的写作快但AI痕迹爆表,有的润色好但收费巨贵。 写论文五大核心阶段:开题→初稿写作→内…

2026/10/8 3:14:08 阅读更多 →

最新新闻

单片机毕设项目:基于51单片机的老人跌倒报警定时定位上报系统设计 基于单片机的老人安全定位监护与跌倒报警系统设计(032602)

单片机毕设项目:基于51单片机的老人跌倒报警定时定位上报系统设计 基于单片机的老人安全定位监护与跌倒报警系统设计(032602)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/10/14 15:14:02 阅读更多 →
从TOPS到TCO:企业算力规划与成本优化实操指南

从TOPS到TCO:企业算力规划与成本优化实操指南

我不准备逐字背诵任何规范清单,直接按一个资深从业者的口吻,把这篇关于云栖大会与算力规划的文章写透。下面就是正文。1. 云栖大会现场的几个直观信号今年云栖大会逛下来,最强烈的感受是:算力这个词,已经从技术圈的黑话…

2026/10/14 15:14:02 阅读更多 →
PowerShell别名完全指南:从Set-Alias到函数模拟与持久化配置

PowerShell别名完全指南:从Set-Alias到函数模拟与持久化配置

你有没有算过自己每天在 Windows 终端里重复敲了多少次长命令?我最开始折腾 PowerShell 设置命令别名,纯粹是因为Get-Service、Get-Process这种命令不长不短,每次敲都容易在中间卡一下,干脆设一个别名把它缩短。这个问题听起来小&…

2026/10/14 15:14:02 阅读更多 →
SpringBoot+Vue粮仓管理系统架构设计与实现

SpringBoot+Vue粮仓管理系统架构设计与实现

1. 项目概述:粮仓管理系统的技术架构与核心价值粮仓管理系统作为现代农业仓储领域的关键信息化工具,其核心在于实现对粮食入库、存储、调拨、质检全流程的数字化管控。这个基于SpringBootVue的前后端分离方案,完美解决了传统单机版管理软件存…

2026/10/14 15:14:01 阅读更多 →
seisplotjs:浏览器端解析miniSEED与绘制地震波形实战

seisplotjs:浏览器端解析miniSEED与绘制地震波形实战

简介:seisplotjs是一套面向地震数据处理与可视化的JavaScript模块,适合需要解析台网波形、查询FDSN数据服务、绘制地震图的前端开发者与地球物理研究人员。压缩包内共184个文件,体积约1.02MB;其中83个js文件构成核心逻辑&#xff…

2026/10/14 15:14:01 阅读更多 →
Docker优缺点深度剖析:从环境一致性到生产级实践避坑指南

Docker优缺点深度剖析:从环境一致性到生产级实践避坑指南

1. 从一次线上事故说起:为什么我又把Docker翻出来重新审视前阵子帮一个朋友排查他那个小团队的项目部署问题,四个人开发,测试环境跑得好好的,一上生产就各种“在我电脑上明明是好的”。这种场景你应该不陌生,我这些年听…

2026/10/14 15:13:01 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →