news 2026/9/19 13:43:33

Windows包管理器Chocolatey安装全攻略与避坑指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Windows包管理器Chocolatey安装全攻略与避坑指南

很多人第一次接触Windows上的命令行安装工具,多半是被各种软件官网的下载按钮绕晕之后才想到去找一个统一的解决方式。Chocolatey就是这么个东西:一个Windows平台上的包管理器,用一行命令就能装软件、更新软件、卸载软件,省去手动点点点的流程。这篇文章不绕弯子,直接讲怎么在自己电脑上把它装好,以及我在实际安装和使用过程中踩过的一些坑,希望能帮你少走几步冤枉路。

先说清楚这篇文章适合谁。如果你是那种每天要装好几次开发工具的人,比如Git、Node.js、Python、VS Code这类,或者你要一次性给多台Windows机器配同样的环境,那Chocolatey基本是省时间的利器。就算你是刚接触命令行的新手,只要肯照着下面的步骤操作,一般十分钟内就能跑通。我会把安装的每个步骤都拆开讲,遇到报错怎么处理也一并写清楚,保证你拿着文章就能自己动手装。

1. 装之前先搞清楚这几件事

1.1 Windows下的软件安装到底乱在哪

在Windows上装软件,最让人头疼的就是安装途径五花八门。有些软件提供exe安装包,你得去官网下载,然后一路点“下一步”;有些走Microsoft Store,更新方式又和exe完全不同;还有些绿色软件直接解压即用,连卸载入口都没有。这种碎片化的管理方式,导致你想统一更新系统里的软件时,只能一个个打开各自的升级入口,时间成本非常高。

Chocolatey就是冲着解决这个问题来的。它把软件包的下载、安装、配置、更新、卸载全部收敛到命令行里,本质上类似Linux上的apt或者yum,只不过服务对象是Windows。你用一条命令装完的东西,它会自动帮你下载对应安装包、静默执行安装流程、配置好环境变量,装完之后想卸载也是一条命令的事,相当干净。

1.2 Chocolatey和普通安装到底有什么区别

举一个生活化的例子。你手动装软件,有点像每次出门都从抽屉里翻钥匙,运气好一下就找到了,运气不好得翻半天。Chocolatey则像在门口装了个钥匙柜,所有钥匙都贴好标签挂在固定位置,你要哪把拿哪把,还不用担心哪把钥匙放错地方。

在技术层面,区别主要体现在这么几点:

  • 普通exe安装通常需要手动选择安装目录、勾选组件,Chocolatey则采用静默安装参数,装完直接用,不需要人为干预。
  • 普通安装完成后,软件的更新、卸载各自为政,Chocolatey则把管理入口统一到了一套命令行体系里,软件列表、版本状态一目了然。
  • 普通安装容易漏配环境变量,Chocolatey在安装时会自动把可执行文件路径加入系统PATH,省去你自己去系统设置里添加的麻烦。

当然,Chocolatey并不是万能的。它本质上是通过脚本调用软件官方的安装包,所以有些特别冷门或者有特殊交互流程的软件,它可能帮不上忙。但对绝大多数常用工具来说,它的表现足够稳定。

1.3 安装前你要做的两个检查

在正式执行安装命令之前,有两点需要先确认一下。第一,当前Windows账号得有管理员权限,或者至少知道管理员密码,因为Chocolatey默认会安装到系统目录并且修改环境变量,没有管理员权限是跑不通的。第二,系统建议保持更新,尤其PowerShell版本不能太老,Windows 10和Windows 11基本都是直接支持的状态,如果还在用Windows 7,那你得提前单独升级PowerShell到5.1以上。

提示:如果你用的是公司统一配发的电脑,建议先确认管理员权限是否被域策略限制,否则安装到一半被拦截,处理起来反而麻烦。

2. 正式安装Chocolatey,步骤全解

2.1 第一步:以管理员身份打开PowerShell

这一步很多教程一句话带过,但实际操作中栽跟头的人不在少数。直接在开始菜单搜“PowerShell”,会看到Windows PowerShell的条目,这时候不能直接回车打开,要右键选择“以管理员身份运行”。如果你用的是Windows Terminal,也要通过管理员方式启动Windows Terminal,再在里面切到PowerShell窗口。

为什么要强调管理员身份?因为Chocolatey安装脚本要往C:\ProgramData\chocolatey这个目录写文件,同时修改系统环境变量。普通权限下这些操作都会被系统拒绝,轻则安装失败,重则中途报错留下一堆残留文件。所以别嫌麻烦,先把这个前置条件落实。

打开之后,可以在命令行里执行一下whoami确认当前身份。如果显示的用户名里有“管理员”字样或者属于Administrators组,那基本就没问题了。

2.2 第二步:允许脚本执行

PowerShell默认对脚本执行有严格的策略限制,Chocolatey的安装脚本需要用到Set-ExecutionPolicy这类命令,所以安装前要把策略调成允许。这一步的目标是把当前用户的执行策略设置为RemoteSigned,意思是本地创建的脚本可以运行,来自网络的脚本必须经过签名验证。

在管理员PowerShell窗口里依次执行以下命令:

Get-ExecutionPolicy Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

执行第二行的时候,系统会弹出一个确认提示,输入YA回车即可。Y表示仅对当前这一次修改生效,A表示对所有修改生效,实际效果没区别,直接输入A就行。如果英文界面显示Execution Policy Change的提示,同样输入YA确认。

个别情况下,公司安全策略会强制锁定ExecutionPolicy,执行Set-ExecutionPolicy时会报错。这时候别硬改系统级策略,更推荐的方式是只针对当前PowerShell会话放开限制。在启动PowerShell时额外加一个参数:

powershell -ExecutionPolicy Bypass -File install.ps1

这种做法不影响系统全局配置,适合临时安装的场景。装好Chocolatey之后,你把PowerShell关闭重新打开,执行策略又恢复原样,对日常使用没有影响。

2.3 第三步:执行官方安装脚本

确认执行策略没问题之后,就可以正式安装Chocolatey了。官方推荐的安装命令是一段PowerShell脚本,它会从Chocolatey官方仓库拉取安装包并自动完成部署。复制下面这段命令,粘贴到管理员PowerShell窗口执行:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

这行命令里包含了好几个动作。Set-ExecutionPolicy Bypass -Scope Process -Force是临时绕过当前会话的执行策略;SecurityProtocol设置是为了兼容TLS 1.2,避免某些老旧系统因为安全协议版本过低导致下载失败;最后的iex是Invoke-Expression的缩写,意思是下载安装脚本内容并直接在当前会话执行。

执行过程中,命令行会滚动输出一堆日志。如果你看到类似Chocolatey v2.x.x installed的字样,恭喜你,安装成功了。如果没有立刻出错但也没看到成功信息,可以继续往下看验证步骤。

2.4 第四步:验证安装是否成功

安装完成后,强烈建议先验证一下,而不是急着去装软件。关闭当前PowerShell窗口,重新打开一个新的PowerShell窗口(这次不用管理员权限也行),输入:

choco -v

正常情况下会输出类似2.3.0的版本号。如果提示choco不是内部或外部命令,多半是PATH环境变量没有刷新。这时候把PowerShell关闭重开,或者注销重新登录一下,一般就能解决。如果重开之后还不行,需要手动检查C:\ProgramData\chocolatey\bin是否存在于系统PATH里。

还有一个验证方式,直接执行:

choco --version

效果和choco -v一样,哪个顺手用哪个。看到版本号,说明Chocolatey已经在系统里正常工作了。

3. 第一次用Chocolatey装软件,完整走一遍

3.1 搜索软件包:确认你要装的东西是否存在

装完Chocolatey的第一件事,当然是拿来装个软件试试水。但在安装之前,最好先搜一下软件对应的包名。Chocolatey的软件包名和软件官方名称可能不太一样,直接猜往往容易出错。搜索命令长这样:

choco search git

这个命令会在Chocolatey官方仓库里搜索名称包含“git”的软件包,返回结果会列出包名、版本号、发布时间等信息。大多数情况下,你想装的流行工具都在仓库里,比如git、nodejs、python、vscode、7zip、googlechrome等等。

如果你已经确定了包名,也可以跳过搜索直接安装。不过我的习惯是先搜一下,顺便看看这个包是否在维护、是否被标记为可信,多一份确认多一份安心。搜索结果里有些包名带-portable后缀,这类是便携版,安装后不需要管理员权限但更新策略上略有差异,日常使用优先选不带后缀的正式包比较省心。

3.2 安装软件包:一行命令搞定

确定包名后,在管理员PowerShell窗口执行安装命令:

choco install git -y

参数-y的意思是自动确认,不加上这个参数的话,Chocolatey会在安装过程中询问你是否要运行安装脚本,输入Y回车也能继续。加-y纯粹是省事,适合脚本化执行。

如果你要一次装多个软件,可以写在同一条命令里:

choco install git nodejs python vscode 7zip -y

Chocolatey会按顺序逐个安装,不用担心相互依赖的问题。命令跑的过程中,你会看到每个软件包都显示DownloadingInstalling状态,装完后会有一行摘要,告诉你哪些包安装成功、耗时多少。

这里补充一个细节:用Chocolatey安装完成后,你最好再单独验证一下软件的可用性。比如装完Git,就执行git --version;装完Node.js,就执行node -vnpm -v。因为Chocolatey装完不代表环境变量一定在你当前窗口里生效。某些软件安装完成后需要关闭当前命令行窗口再重新打开,新加的PATH才会被加载进来。

3.3 更新、卸载、查看已装列表

日常使用中你还会频繁用到另外三个命令,这里一次性列出来。更新某个指定的软件:

choco upgrade git

更新所有已装软件:

choco upgrade all -y

卸载软件:

choco uninstall git -y

查看当前机器上通过Chocolatey安装的软件列表:

choco list

这个choco list显示的是用Chocolatey装过的包,不是系统里全部软件。如果你装某个软件之前系统里已经有一个版本了,那Chocolatey就会有两个不同的记录,管理起来需要稍微留意一下。

3.4 常用命令速查表

为了方便随时翻阅,我整理了一张常用命令的速查表:

操作命令说明
搜索软件包choco search 关键字在官方仓库中搜索可用包
安装软件choco install 包名 -y安装指定包,-y自动确认
升级软件choco upgrade 包名升级指定包
升级全部软件choco upgrade all -y批量升级所有已装包
卸载软件choco uninstall 包名 -y卸载指定包
查看已装列表choco list列出本机Chocolatey安装的包
查看包详情choco info 包名查看包版本、依赖等信息
查看过时包choco outdated列出有可用更新的包

把这些命令记下来,日常管理软件基本就不再需要去官网找下载入口了。当然,choco info这个命令可能平时用得不多,但当你怀疑某个包版本滞后或者不确定它依赖什么时,查一下还是很有用的。

4. 避坑指南:安装和使用中的高频问题

4.1 执行策略报错:这次不是权限问题

很多人第一次执行Chocolatey安装脚本,会遇到类似这样的报错:

无法加载文件 C:\...\install.ps1,因为在此系统上禁止运行脚本

这个报错一般有三个原因。第一个是之前步骤里提到的ExecutionPolicy没有设置成RemoteSigned,解决方式就是回到上文第二步执行一遍设置命令。第二个是当前PowerShell窗口没有用管理员身份打开,就算执行策略允许,文件系统层面的写入权限也会导致安装半途而废。第三个是系统本身对远程脚本更加敏感,某些安全软件会拦截PowerShell执行下载来的脚本,这时候需要暂时关闭相关安全拦截,安装完再打开。

这三个原因其实都可以提前规避,核心原则就两条:用管理员PowerShell,把ExecutionPolicy改成RemoteSigned。

4.2 执行了安装命令但提示找不到choco

安装过程看似顺利,脚本也跑完了,但新开的命令行里输入choco却提示找不到。这个问题九成以上是PATH环境变量没刷新的原因。Windows的PATH是在进程启动时加载的,你正在运行的PowerShell窗口读不到安装时新写入的PATH值,解决办法就是关闭当前窗口,重新打开一个新的。

如果重开几次还是不行,那就手动检查环境变量。右键“此电脑”选择“属性”,进入“高级系统设置”,打开“环境变量”,确认系统变量Path里有没有C:\ProgramData\chocolatey\bin这一项。没有就手工添加,有就说明路径没问题,那再检查一下C:\ProgramData\chocolatey\bin\choco.exe文件是否真实存在。如果文件不存在,多半是安装脚本没跑完整,建议重新执行一遍安装命令。

4.3 安装软件时卡住或下载超时

Chocolatey安装软件的过程,本质上是调用软件官方地址或Chocolatey仓库的资源下载。国内执行时偶尔会遇到下载超时的问题,因为某些软件包默认下载地址访问速度不稳定。遇到这种情况,最直接的解决办法是把Chocolatey的下载地址换成镜像源。

配置镜像源的操作不复杂。Chocolatey的配置项里有一个source参数,可以通过命令查看当前源:

choco source list

默认配置会显示https://community.chocolatey.org/api/v2/。如果你想添加清华大学的镜像源(如果有的话),可以执行:

choco source add -n 清华源 -s https://mirrors.tuna.tsinghua.edu.cn/chocolatey/ --priority=1

实际使用中,我更推荐保留官方源但把安装超时时间调大,或者错峰安装,避开网络高峰。镜像源毕竟在更新速度上会滞后一些,某些最新版本的软件包可能暂时拉不到。

4.4 命令行窗口闪退,脚本还没跑完就没了

你可能会遇到一种诡异的情况:PowerShell窗口刚执行安装命令,窗口瞬间就关了,根本来不及看报错。这种情况多半不是Chocolatey本身的问题,而是PowerShell窗口的启动参数或者系统配置异常。常见诱因包括:系统环境变量里存在无法解析的路径、PowerShell配置文件里写了不兼容的启动脚本、安全软件干扰了命令行进程。

排查方式比较实用的一招,是先打开cmd窗口,然后在cmd里输入powershell,再在PowerShell进程内执行choco -v。如果这样能正常显示,说明问题出在PowerShell窗口启动时的自动化配置上。如果连PowerShell进程都起不来,那就要检查系统PATH,看看是不是有某个变量指向了不存在的路径,把命令行启动给拖崩了。

注意:排查命令行闪退问题时,优先看系统事件查看器里的应用程序日志,那里面会记录崩溃模块的具体名称,比在命令行里瞎试更高效。

4.5 装完软件但运行不了,命令提示不是内部或外部命令

这是安装成功后最容易遇到的问题之一。Chocolatey明明显示安装成功,但你在命令行里执行软件命令却说找不到。这里有个很常见的坑:Windows的PATH环境变量有顺序问题,如果系统里已经有一个旧版本的软件路径排在Chocolatey安装的新版本前面,命令行会优先执行旧版本的二进制文件,导致你感觉“没装上”。

解决方式分两种。一种是把Chocolatey的C:\ProgramData\chocolatey\bin路径往PATH列表的顶部调整,让它的优先级高于其他路径;另一种是干脆把其他同类软件的旧路径从PATH里删掉,保留一个干净的环境。我个人更推荐后者,因为旧路径残留多了,环境变量会越来越臃肿,后续排查问题也更费劲。

4.6 安装某些软件包时,出现“requires a license”提示

Chocolatey仓库的软件包分两类,一类是开源免费软件,一类是需要商业授权的商业软件。像choco install officebusinesspro这类商业软件的安装包,执行时会提示你选择版本和提供授权信息,因为它们并不是真正的“免费安装”,而是帮你下载官方安装器然后走官方激活流程。

遇到这种情况,建议先去软件官网确认是否有授权。不要试图绕过授权提示,因为商业软件的管理规范和版权保护是有明确规定的,Chocolatey只是提供了统一安装入口,并没有授权你做任何规避操作。老老实实提供合法的授权信息,软件才能正常使用,这是基本原则。

4.7 安装中途中断,再次安装提示已存在

安装过程因为网络问题或者手动中断,可能导致软件包处于“半装”状态。再次执行安装时,Chocolatey可能会提示软件已经安装,但实际上软件并不存在或文件缺失。这种状态最烦人,解决思路是先卸载再重装:

choco uninstall 包名 -y --force choco install 包名 -y

--force参数会强制卸载,即使Chocolatey没有找到完整的卸载记录也能执行。如果卸载时提示找不到包,就直接手动删除软件安装目录,然后清理一下C:\ProgramData\chocolatey\lib\包名下的残留文件夹,再重新安装。

4.8 常见问题速查表

问题现象常见原因排查方向
安装脚本被禁止运行ExecutionPolicy限制设置RemoteSigned或Bypass
找不到choco命令PATH未刷新重启PowerShell,检查PATH
软件下载超时网络原因更换镜像源或错峰安装
命令行闪退环境变量异常查看事件日志,检查PATH
装完软件不能运行路径优先级冲突调整PATH顺序或清理旧路径
半装状态安装中断强制卸载后重装

5. 装完Chocolatey之后,还能怎么用

5.1 批量部署环境,一条命令装完常用软件

Chocolatey最实用的场景,其实是新电脑或者新系统重装之后的批量部署。以前我每次重装完Windows,都要去各种软件官网下载安装包,来回折腾一两个小时。现在只需要提前整理一份清单:

choco install -y ` git ` nodejs-lts ` python3 ` vscode ` googlechrome ` notepadplusplus ` ​7zip ` powertoys ` everything ` terminal

这条命令会把从浏览器到文本编辑器到开发运行环境的常用工具全部装好,剩下要做的就是等它跑完。实测下来,比起逐个手动装,这种批量方式至少省去一半时间,还不用记安装向导的各种选项。

如果你经常需要给多台机器配环境,还可以把这份软件清单写成一个PowerShell脚本,扔到U盘或者云盘里,换机器的时候直接执行脚本,一套流程走完,效率提升非常明显。

5.2 结合自动化工具,把环境配置脚本化

Chocolatey和自动化脚本是天然搭档。比如我习惯把软件安装和系统配置写进同一个脚本,开头先执行Chocolatey安装,然后用Chocolatey装完所有软件,再调用其他配置命令设置系统参数。这样一台新电脑从开机到开发环境就绪,基本可以做到无人值守。

实际执行的时候,建议把脚本分成几个函数模块,一个函数负责安装Chocolatey,一个函数负责批量安装软件,一个函数负责验证安装结果。每个函数里都加上日志输出和错误判断,这样中途出问题的时候可以快速定位到具体是哪一步失败了,不用整段脚本从头跑。

5.3 定期更新已装软件,减少安全隐患

软件更新的重要性不用多说,老版本软件的安全漏洞是众所周知的问题。通过Chocolatey,你只需要定期执行:

choco upgrade all -y

就能把本机所有通过Chocolatey安装的软件一次性升级到最新版。这个命令特别适合放在某个固定的维护时间执行,比如每周五下班前跑一次,让电脑始终保持相对新鲜的状态。

当然,upgrade all也有一个需要注意的地方:某些软件升级可能会导致配置文件不兼容或版本回退。所以对于生产环境或者工作主力的电脑,我建议不要盲目执行全量升级,而是先用choco outdated看一下有哪些软件可以更新,然后选择性地升级那些你确实需要的新版本软件。

5.4 配合国内环境怎么做更稳

前面提到过镜像源的问题,这里再展开说一下。Chocolatey官方源在国内访问的稳定性取决于网络状况,有时候下载速度很慢,有时候连接超时。如果你发现官方源实在不给力,可以按下面的方式添加一个国内源作为备用:

choco source add -n 备用源 -s https://mirrors.example.com/chocolatey/ --priority=2

--priority数字越小优先级越高。官方源保留0优先级,备用源设置成2,这样Chocolatey会优先访问官方源,万一官源挂掉还能自动落到备用源,不至于一硬到底。

不过说实话,配置镜像源并不是一劳永逸的办法。镜像源同步软件包的时效性通常比官方源慢一些,某些刚发布的最新版本可能拉不到。所以我自己的策略是:默认走官方源,下载超时就临时切换镜像,用完再切回来。平时保持官方源即可,没必要长期挂镜像。

5.5 备份和恢复已装软件列表

换新电脑的时候,除了备份文件,还要记得把软件列表备份走。Chocolatey支持导出和导入包列表,新机器上执行以下命令快速恢复:

先导出旧电脑的软件清单:

choco list -r > packages.txt

新电脑上安装完Chocolatey后,批量安装清单里的软件:

Get-Content packages.txt | ForEach-Object { choco install $_ -y }

这种方式特别适合重装场景。导出的packages.txt就是单纯的文本文件,每行一个包名,你还可以手动删掉不需要的包,只安装真正要用的软件,灵活度很高。

6. 一些实际操作的小心得

安装和使用Chocolatey这么长时间,有几个体会值得说一说。

第一个心得是:管理员权限这件事真的别嫌烦。很多人第一次装失败,回过头看一半以上都是因为没有用管理员PowerShell执行命令。Chocolatey要改系统目录、改环境变量,普通权限下它一步都走不通。所以安装时老老实实右键管理员身份运行,后面所有步骤才会顺畅。

第二个心得:执行choco upgrade all -y之前,最好先看一眼choco outdated的输出。有些软件升级策略比较激进,新版本可能和你当前的工作环境存在兼容问题。保持前进版本未必是好事,尤其工作主力机,稳定优先。

第三个心得:Chocolatey装完软件之后,不要完全丢开软件自带的配置工具。Chocolatey负责的是“装”这个动作,但软件的个性化设置,比如编辑器主题、终端配色、开发环境路径,这些还是得你自己去配置。它帮你省掉的是下载和安装的时间,不是后续使用的学习成本。

第四个心得:如果你经常用PowerShell做自动化,建议给自己维护一个常用软件包的清单文件,放在云盘或者Git仓库里管理。每次新电脑装环境,直接拉下来跑,比临时去翻各种安装命令要省心得多。这个习惯我坚持了挺久,实际带来的价值很高。

最后再分享一个小技巧:如果你只是临时想用某个软件测试一下,不确定要不要长期使用,可以考虑用Chocolatey安装便携版。便携版软件不需要写入系统目录,卸载的时候也更干净,非常适合做短期的工具验证。

这个东西装好之后,你会发现Windows的软件管理其实也可以很整齐。希望这篇避坑指南能帮你顺顺利利完成安装,少踩几个我踩过的坑。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/19 13:42:23

手机也能开F12?三种途径搞定移动端网页调试

手机上到底能不能像电脑按 F12 那样打开“开发者模式”来调试网页?这是我在技术群里被问得最多的问题之一。答案是能,但手机上没有那个物理按键,你得换一种思路去找控制台。这篇内容不会只丢给你一句“下载某浏览器解决”,而是把从…

作者头像 李华
网站建设 2026/9/19 13:41:47

一键清理B站关注列表:BiliBiliToolPro批量取关完整教程

一键清理B站关注列表:BiliBiliToolPro批量取关完整教程 【免费下载链接】BiliBiliToolPro B 站(bilibili)自动任务工具,支持docker、青龙、k8s等多种部署方式。全面拥抱AI。敏感肌也能用。 项目地址: https://gitcode.com/GitHu…

作者头像 李华
网站建设 2026/9/19 13:41:43

STM32 HardFault深度分析:用CubeIDE打造故障诊断器

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

作者头像 李华
网站建设 2026/9/19 13:38:53

可综合的Verilog HDL设计:从RTL到门级网表的完整验证流程

简介:这是一份面向FPGA/ASIC初学者的Verilog HDL数字设计与综合习题解答资料,内容紧扣数字系统设计基础,覆盖编译综合流程、模块与端口概念、连续赋值与过程赋值区别、阻塞与非阻塞赋值适用场景,以及defparam参数传递、同步/异步清…

作者头像 李华
网站建设 2026/9/19 13:38:44

apache文件上传并获取参数获取text文本数据和上传

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

作者头像 李华