<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>记本本 on NaCl 在摸鱼</title><link>https://nacl521.netlify.app/categories/%E8%AE%B0%E6%9C%AC%E6%9C%AC/</link><description>Recent content in 记本本 on NaCl 在摸鱼</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Sat, 30 May 2026 15:25:10 +0800</lastBuildDate><atom:link href="https://nacl521.netlify.app/categories/%E8%AE%B0%E6%9C%AC%E6%9C%AC/index.xml" rel="self" type="application/rss+xml"/><item><title>记录一下崩铁的 Fandom 和 BWiki 图片 URL 前字符串</title><link>https://nacl521.netlify.app/p/%E8%AE%B0%E5%BD%95%E4%B8%80%E4%B8%8B%E5%B4%A9%E9%93%81%E7%9A%84-fandom-%E5%92%8C-bwiki-%E5%9B%BE%E7%89%87-url-%E5%89%8D%E5%AD%97%E7%AC%A6%E4%B8%B2/</link><pubDate>Sat, 30 May 2026 15:25:10 +0800</pubDate><guid>https://nacl521.netlify.app/p/%E8%AE%B0%E5%BD%95%E4%B8%80%E4%B8%8B%E5%B4%A9%E9%93%81%E7%9A%84-fandom-%E5%92%8C-bwiki-%E5%9B%BE%E7%89%87-url-%E5%89%8D%E5%AD%97%E7%AC%A6%E4%B8%B2/</guid><description>&lt;img src="https://nacl521.netlify.app/p/%E8%AE%B0%E5%BD%95%E4%B8%80%E4%B8%8B%E5%B4%A9%E9%93%81%E7%9A%84-fandom-%E5%92%8C-bwiki-%E5%9B%BE%E7%89%87-url-%E5%89%8D%E5%AD%97%E7%AC%A6%E4%B8%B2/img.webp" alt="Featured image of post 记录一下崩铁的 Fandom 和 BWiki 图片 URL 前字符串" /&gt;&lt;h2 id="fandom"&gt;&lt;a href="#fandom" class="header-anchor"&gt;&lt;/a&gt;Fandom
&lt;/h2&gt;&lt;p&gt;我以前在
&lt;a class="link" href="https://honkai-star-rail.fandom.com/" target="_blank" rel="noopener"
 &gt;Honkai: Star Rail Wiki&lt;/a&gt;
找角色的素材图时注意到，每张图片的 URL 格式都很相似。
比如姬子跃迁立绘：&lt;code&gt;https://static.wikia.nocookie.net/houkai-star-rail/images/8/8e/Character_Himeko_Splash_Art.png/revision/latest?cb=20230525090036&lt;/code&gt;，共同的前缀+1 位字符+2 位字符+文件名+版本控制参数。
所有图的文件名格式都很规范，比如 &lt;code&gt;Character_Himeko_Icon.png&lt;/code&gt; 是姬子头像，&lt;code&gt;Character_Himeko_Eidolon_6.png&lt;/code&gt; 是姬子 6 星魂。&lt;/p&gt;
&lt;p&gt;我猜测 &lt;code&gt;imgaes&lt;/code&gt; 和文件名之间的两处字符是为了优化缓存和负载均衡之类的，可能是用某种哈希算法根据文件名生成的，但是用于相关函数说不定在 js 里面。
我可不懂如何从网页前端扒拉 js 用，于是打算把所有角色各素材的 URL 中那两处特殊的字符单独存下来。
存了几个之后发现，1 位字符始终是 2 位字符的第 1 位，于是只存两位字符就行。&lt;/p&gt;
&lt;p&gt;前段时间想，不管函数存在哪里，我猜用的还是成熟算法，自己设计算法容易不平衡、不稳定、有漏洞什么的，费力不讨好。
于是我尝试生成一下文件名的 MD5，没想到还真是这个。
比如 &lt;code&gt;Character_Himeko_Splash_Art.png&lt;/code&gt; 的 MD5 开头就是 &lt;code&gt;8e&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;于是我把之前好容易全存下来的数据全删了哈哈哈。&lt;/p&gt;
&lt;h2 id="bwiki"&gt;&lt;a href="#bwiki" class="header-anchor"&gt;&lt;/a&gt;BWiki
&lt;/h2&gt;&lt;p&gt;后来也想用
&lt;a class="link" href="https://wiki.biligame.com/sr/" target="_blank" rel="noopener"
 &gt;星穹铁道WIKI&lt;/a&gt;
的素材，一看图片 URL 傻眼了。
比如姬子的半身立绘图：&lt;code&gt;https://patchwiki.biligame.com/images/sr/0/08/3gv4qax2cdksleouchs6vr0y8jgdg6g.png&lt;/code&gt;。
&lt;code&gt;sr&lt;/code&gt; 后面的两处应该还是与 Fandom 类似的做法，但是文件名像加密了似的，而且文件名的算法还不一样。&lt;/p&gt;
&lt;p&gt;想了一想，估计这种文件名的作用和前面两处字符也差不多，而且网页里也得有个原来的字符串的蛛丝马迹。
一不做二不休，开 &lt;code&gt;F12&lt;/code&gt; 看两眼。
找到了疑似原文件名的参数 &lt;code&gt;角色一览-姬子.png&lt;/code&gt;。
试一试算 MD5，开头是 &lt;code&gt;08&lt;/code&gt;，好耶！&lt;/p&gt;
&lt;p&gt;那文件名会是什么算法呢？
试了试 MD5、SHA-1、SHA-256、SHA-512 都不对，去掉后缀名用 &lt;code&gt;角色一览-姬子&lt;/code&gt; 再试一次生成，也不对。
想用英文名试试，但是不知道 &lt;code&gt;角色一览&lt;/code&gt; 在站里的英文对应什么，就从角色头像试试，但还都不对。&lt;/p&gt;
&lt;p&gt;仔细观察一下，URL 文件名所有字母都有，但是算出来的都是 16 进制的字符串，那我转 36 进制试试。
依然不对。&lt;/p&gt;
&lt;p&gt;那会不会是用文件本身生成的呢？
于是用 Dolphin 文件管理器自带的计算文件校验码的功能看了看，SHA-1 转 36 进制的前 10 位对上了！&lt;/p&gt;
&lt;p&gt;那后面的部分会是什么呢？
用不同算法拼接的吗？
把之前步骤里的字符串对照一下，没找到共同子串。&lt;/p&gt;
&lt;p&gt;要不问问 AI 叭，于是把现在的情况给 &lt;del&gt;Deepsleep&lt;/del&gt; 描述了一下。
&lt;del&gt;深度睡眠&lt;/del&gt;先生也说可能是拼接的，按它给的方案试了试都不行。
又刷新了几次，提到可能是进制转换时没用大整数导致的。
了解了一下什么是大整数，然后用代码生成了一下，真成了~&lt;/p&gt;
&lt;p&gt;其实整个文件名都是用 SHA-1 生成的，只是之前转码用的不是大整数。
把整个字符串看成一个完整的 16 进制整数去转换，而不是按每位字符转换就可以了~（耶&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;hashlib&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sha1_to_base36&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filepath&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 读取文件二进制&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filepath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;rb&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 计算 SHA-1 十六进制（40位）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;hex_digest&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;hashlib&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sha1&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;hexdigest&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 转换为大整数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;big_num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hex_digest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 转换为 36 进制&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;chars&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0123456789abcdefghijklmnopqrstuvwxyz&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;big_num&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;31&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;big_num&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;big_num&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;rem&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;divmod&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;big_num&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;36&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chars&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;rem&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;base36&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;reversed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 前面补0至31位&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;base36&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rjust&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;31&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;0&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 测试&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;filepath&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;path/to/file&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sha1_to_base36&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filepath&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>我的 Arch Linux + Niri + Noctalia 安装</title><link>https://nacl521.netlify.app/p/%E6%88%91%E7%9A%84-arch-linux--niri--noctalia-%E5%AE%89%E8%A3%85/</link><pubDate>Tue, 23 Apr 2024 15:00:00 +0800</pubDate><guid>https://nacl521.netlify.app/p/%E6%88%91%E7%9A%84-arch-linux--niri--noctalia-%E5%AE%89%E8%A3%85/</guid><description>&lt;p&gt;我的环境：机械革命 S1 Pro，i5-8265u，NVIDIA MX250，双硬盘双系统&lt;/p&gt;
&lt;p&gt;由于 &lt;strong&gt;Arch Linux&lt;/strong&gt; 滚动更新，本指南&lt;strong&gt;有时效性&lt;/strong&gt;，请注意本文&lt;strong&gt;修改日期&lt;/strong&gt;。
见
&lt;a class="link" href="https://wiki.archlinux.org/title/Installation_guide" target="_blank" rel="noopener"
 &gt;官方的安装指南&lt;/a&gt;
。
当下，
&lt;a class="link" href="https://wiki.archlinux.org/title/Archinstall" target="_blank" rel="noopener"
 &gt;Archinstall&lt;/a&gt;
已经预装在安装镜像中了，但我不太喜欢预定配置，所以手动安装。
我的环境是 &lt;strong&gt;UEFI&lt;/strong&gt; 启动的 &lt;strong&gt;amd64&lt;/strong&gt; 系统，能装 &lt;strong&gt;Windows 10&lt;/strong&gt; 的电脑基本都能满足这一点。
详见
&lt;a class="link" href="https://wiki.archlinux.org/title/Installation_guide#Verify_the_boot_mode" target="_blank" rel="noopener"
 &gt;Verify the boot mode&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="安装前"&gt;&lt;a href="#%e5%ae%89%e8%a3%85%e5%89%8d" class="header-anchor"&gt;&lt;/a&gt;安装前
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;a class="link" href="https://archlinux.org/download/" target="_blank" rel="noopener"
 &gt;下载安装镜像&lt;/a&gt;
，用 &lt;strong&gt;Ventory&lt;/strong&gt; 把没有重要数据的小 U 盘制作成安装盘，然后把安装镜像复制进 U 盘的存储空间。
Linux 下烧录教程请移步
&lt;a class="link" href="https://nacl521.netlify.app/p/linux-%E4%B8%8B%E5%88%B6%E4%BD%9C-u-%E7%9B%98%E5%AE%89%E8%A3%85%E9%95%9C%E5%83%8F/" &gt;Linux 下制作 U 盘安装镜像&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;关闭 &lt;strong&gt;BIOS&lt;/strong&gt; 中的&lt;strong&gt;安全启动&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;关闭 Windows 的&lt;strong&gt;快速启动&lt;/strong&gt;功能（忘了是否有影响了，不过关了也放心）&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote class="alert alert-tip"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;💡&lt;/span&gt;
 &lt;span class="alert-title"&gt;提示&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;最好在虚拟机里尝试安装一次再操作物理机，稳妥永不过时。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;p&gt;安装镜像的系统中自带 &lt;strong&gt;vim&lt;/strong&gt;、&lt;strong&gt;nano&lt;/strong&gt; 等文本编辑器，后者用法简单，百度一下就会了。&lt;/p&gt;
&lt;h3 id="进入-u-盘的安装系统"&gt;&lt;a href="#%e8%bf%9b%e5%85%a5-u-%e7%9b%98%e7%9a%84%e5%ae%89%e8%a3%85%e7%b3%bb%e7%bb%9f" class="header-anchor"&gt;&lt;/a&gt;进入 U 盘的安装系统
&lt;/h3&gt;&lt;p&gt;U 盘插入电脑后开机，按功能键进入&lt;strong&gt;启动菜单（Boot Menu）&lt;/strong&gt;，如 &lt;code&gt;F7&lt;/code&gt; 或 &lt;code&gt;F12&lt;/code&gt; 等（不同电脑牌子或主板不同），选择 U 盘对应启动项。不清楚就百度搜索自己的电脑型号如何进入启动菜单。&lt;/p&gt;
&lt;p&gt;如果字太小，&lt;code&gt;setfont ter-132b&lt;/code&gt; 临时换个大的终端字体。&lt;/p&gt;
&lt;h3 id="联网"&gt;&lt;a href="#%e8%81%94%e7%bd%91" class="header-anchor"&gt;&lt;/a&gt;联网
&lt;/h3&gt;&lt;p&gt;网线连接一般自动配置好了。
如果从 &lt;strong&gt;WiFi&lt;/strong&gt; 连接，用
&lt;a class="link" href="https://wiki.archlinux.org/title/Iwd#iwctl" target="_blank" rel="noopener"
 &gt;iwctl&lt;/a&gt;
。
然后 &lt;code&gt;ping baidu.com&lt;/code&gt; 测试联网，如果大约每秒都出现一行新结果，表明网络畅通。&lt;/p&gt;
&lt;h2 id="磁盘分区与格式化"&gt;&lt;a href="#%e7%a3%81%e7%9b%98%e5%88%86%e5%8c%ba%e4%b8%8e%e6%a0%bc%e5%bc%8f%e5%8c%96" class="header-anchor"&gt;&lt;/a&gt;磁盘分区与格式化
&lt;/h2&gt;&lt;blockquote class="alert alert-warning"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;⚠️&lt;/span&gt;
 &lt;span class="alert-title"&gt;警告&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;&lt;strong&gt;千万不要装错硬盘！&lt;/strong&gt; 防止不小心格式化其他盘，本文以 &lt;code&gt;sdX&lt;/code&gt; 代称。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;p&gt;使用 &lt;code&gt;lsblk&lt;/code&gt; 命令得知硬盘的「名字」。&lt;/p&gt;
&lt;p&gt;硬盘分区的「名字」举例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/dev/sdc3&lt;/code&gt;：硬盘 &lt;code&gt;/dev/sdc&lt;/code&gt; 上的第 &lt;strong&gt;3&lt;/strong&gt; 个分区&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/dev/nvme2n5p3&lt;/code&gt;：硬盘 &lt;code&gt;/dev/nvme2n5&lt;/code&gt; 上的第 &lt;strong&gt;3&lt;/strong&gt; 个分区&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: center"&gt;我的方案&lt;/th&gt;
 &lt;th style="text-align: center"&gt;建议大小&lt;/th&gt;
 &lt;th style="text-align: center"&gt;作用&lt;/th&gt;
 &lt;th style="text-align: center"&gt;文件系统&lt;/th&gt;
 &lt;th style="text-align: center"&gt;分区&lt;/th&gt;
 &lt;th style="text-align: center"&gt;挂载点位&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;1 GiB&lt;/td&gt;
 &lt;td style="text-align: center"&gt;1 GiB&lt;/td&gt;
 &lt;td style="text-align: center"&gt;引导分区&lt;/td&gt;
 &lt;td style="text-align: center"&gt;fat32&lt;/td&gt;
 &lt;td style="text-align: center"&gt;/dev/sdX1&lt;/td&gt;
 &lt;td style="text-align: center"&gt;/efi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;剩余所有空间&lt;/td&gt;
 &lt;td style="text-align: center"&gt;剩余所有空间&lt;/td&gt;
 &lt;td style="text-align: center"&gt;根分区&lt;/td&gt;
 &lt;td style="text-align: center"&gt;btrfs&lt;/td&gt;
 &lt;td style="text-align: center"&gt;/dev/sdX2&lt;/td&gt;
 &lt;td style="text-align: center"&gt;/&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;p&gt;使用 &lt;code&gt;fdisk /dev/sdX&lt;/code&gt; 命令进入交互式分区。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;g &lt;span class="c1"&gt;# 创建 GPT 分区表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;n &lt;span class="c1"&gt;# 新建分区 1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;Enter&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# 默认分区号&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;Enter&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# 默认起始扇区&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+1G &lt;span class="c1"&gt;# 大小 1 GiB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;t &lt;span class="c1"&gt;# 修改类型&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="c1"&gt;# 选择分区 1（或直接回车）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="c1"&gt;# 设为 EFI System 分区&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;n &lt;span class="c1"&gt;# 新建分区 2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;Enter&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# 默认分区号&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;Enter&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# 默认起始扇区&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;Enter&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# 默认剩余全部空间&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;t &lt;span class="c1"&gt;# 修改类型&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;2&lt;/span&gt; &lt;span class="c1"&gt;# 选择分区 2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;23&lt;/span&gt; &lt;span class="c1"&gt;# 设为 Linux root (x86-64) 分区&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;w &lt;span class="c1"&gt;# 写入并退出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后用 &lt;code&gt;fdisk -l /dev/sdX&lt;/code&gt; 检查分区结果。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;格式化分区：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkfs.fat -F &lt;span class="m"&gt;32&lt;/span&gt; /dev/sdX1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkfs.btrfs -f /dev/sdX2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;创建 Btrfs 子卷：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount /dev/sdX2 /mnt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# @ 作为未来系统的根&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;btrfs subvolume create /mnt/@
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# @home 承载用户数据&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;btrfs subvolume create /mnt/@home
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# @log 存放日志，做快照时排除它，避免回滚丢失关键日志&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;btrfs subvolume create /mnt/@log
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# @cache 中储存大多数是 var/cache/pacman/pkg 存放 pacman 下载的包缓存，做快照时排除它，节省空间&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;btrfs subvolume create /mnt/@cache
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# @tmp 存放重启也能保留的临时文件，做快照时排除它，节省空间&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;btrfs subvolume create /mnt/@cache
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# @snapshots 专门存放快照，避免嵌套在 @ 中导致快照混乱&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;btrfs subvolume create /mnt/@snapshots
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;umount /mnt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;现在按照设计好的布局挂载，特别注意挂载选项 &lt;code&gt;noatime,compress=zstd&lt;/code&gt; 对性能和空间非常有益。&lt;/p&gt;
&lt;blockquote class="alert alert-warning"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;⚠️&lt;/span&gt;
 &lt;span class="alert-title"&gt;警告&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;如果需要预留给&lt;strong&gt;虚拟机&lt;/strong&gt;用的子卷，记得在参数中&lt;strong&gt;关闭 CoW&lt;/strong&gt;。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 挂载根子卷&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount -o noatime,compress&lt;span class="o"&gt;=&lt;/span&gt;zstd,subvol&lt;span class="o"&gt;=&lt;/span&gt;@ /dev/sdX2 /mnt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 创建并挂载其他目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p /mnt/&lt;span class="o"&gt;{&lt;/span&gt;efi,home,var/log,var/cache,var/tmp,.snapshots&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 挂载 EFI 分区&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount /dev/sdX1 /mnt/efi
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 挂载其余子卷&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount -o noatime,compress&lt;span class="o"&gt;=&lt;/span&gt;zstd,subvol&lt;span class="o"&gt;=&lt;/span&gt;@home /dev/sdX2 /mnt/home
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount -o noatime,compress&lt;span class="o"&gt;=&lt;/span&gt;zstd,subvol&lt;span class="o"&gt;=&lt;/span&gt;@log /dev/sdX2 /mnt/var/log
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount -o noatime,compress&lt;span class="o"&gt;=&lt;/span&gt;zstd,subvol&lt;span class="o"&gt;=&lt;/span&gt;@cache /dev/sdX2 /mnt/var/cache
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount -o noatime,compress&lt;span class="o"&gt;=&lt;/span&gt;zstd,subvol&lt;span class="o"&gt;=&lt;/span&gt;@tmp /dev/sdX2 /mnt/var/tmp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount -o noatime,compress&lt;span class="o"&gt;=&lt;/span&gt;zstd,subvol&lt;span class="o"&gt;=&lt;/span&gt;@snapshots /dev/sdX2 /mnt/.snapshots
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="安装基础系统与配置"&gt;&lt;a href="#%e5%ae%89%e8%a3%85%e5%9f%ba%e7%a1%80%e7%b3%bb%e7%bb%9f%e4%b8%8e%e9%85%8d%e7%bd%ae" class="header-anchor"&gt;&lt;/a&gt;安装基础系统与配置
&lt;/h2&gt;&lt;p&gt;用
&lt;a class="link" href="https://wiki.archlinux.org/title/Reflector" target="_blank" rel="noopener"
 &gt;&lt;strong&gt;Reflector&lt;/strong&gt;&lt;/a&gt;
设置镜像源：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;reflector --country China --latest &lt;span class="m"&gt;20&lt;/span&gt; --protocol https --sort rate --save /etc/pacman.d/mirrorlist
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果是 &lt;strong&gt;AMD&lt;/strong&gt; CPU 把 &lt;code&gt;intel-ucode&lt;/code&gt; 换成 &lt;code&gt;amd-ucode&lt;/code&gt;。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pacstrap -K /mnt base base-devel linux linux-firmware btrfs-progs neovim &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; networkmanager grub efibootmgr intel-ucode &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; zsh grml-zsh-config zsh-autosuggestions zsh-completions zsh-syntax-highlighting
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;genfstab -U /mnt &amp;gt;&amp;gt; /mnt/etc/fstab
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;arch-chroot /mnt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;此时将进入硬盘内的系统。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;时区与本地化：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hwclock --systohc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;编辑 &lt;code&gt;/etc/locale.gen&lt;/code&gt;，找到 &lt;code&gt;en_US.UTF-8 UTF-8&lt;/code&gt; 和 &lt;code&gt;zh_CN.UTF-8 UTF-8&lt;/code&gt;，取消行首注释。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;locale-gen
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;LANG=en_US.UTF-8&amp;#34;&lt;/span&gt; &amp;gt; /etc/locale.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;网络与用户：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 给你的电脑起个名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;电脑名&amp;#34;&lt;/span&gt; &amp;gt; /etc/hostname
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 设置 root 密码&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;passwd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 添加普通用户，我这里指定使用 zsh 作为默认终端&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;useradd -m -G wheel -s /bin/zsh 用户名
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;passwd 用户名
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;赋予 &lt;code&gt;wheel&lt;/code&gt; 用户组管理员权限，&lt;code&gt;nvim&lt;/code&gt; 换成你用的编辑器名字。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;EDITOR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;nvim visudo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;找到 &lt;code&gt;# %wheel ALL=(ALL:ALL) ALL&lt;/code&gt;，删掉开头的 &lt;code&gt;#&lt;/code&gt;，保存退出。
有几行比较像，别找错了。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;配置
&lt;a class="link" href="https://wiki.archlinux.org/title/GRUB" target="_blank" rel="noopener"
 &gt;&lt;strong&gt;GRUB&lt;/strong&gt;&lt;/a&gt;
：&lt;/p&gt;
&lt;p&gt;如果需要多系统引导，安装 &lt;code&gt;os-prober&lt;/code&gt; 并修改 &lt;code&gt;/etc/default/grub&lt;/code&gt;，删除下面这行开头的 &lt;code&gt;#&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# GRUB_DISABLE_OS_PROBER=false
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;grub-install --target&lt;span class="o"&gt;=&lt;/span&gt;x86_64-efi --efi-directory&lt;span class="o"&gt;=&lt;/span&gt;/efi --bootloader-id&lt;span class="o"&gt;=&lt;/span&gt;Arch
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;grub-mkconfig -o /boot/grub/grub.cfg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="系统优化"&gt;&lt;a href="#%e7%b3%bb%e7%bb%9f%e4%bc%98%e5%8c%96" class="header-anchor"&gt;&lt;/a&gt;系统优化
&lt;/h2&gt;&lt;p&gt;配置
&lt;a class="link" href="https://wiki.archlinux.org/title/Zram#Using_zram-generator" target="_blank" rel="noopener"
 &gt;&lt;strong&gt;Zram&lt;/strong&gt;&lt;/a&gt;
。
比起传统的硬盘交换空间，&lt;strong&gt;Zram&lt;/strong&gt; 在内存中动态压缩，速度极快。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pacman -S zram-generator
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;创建配置文件 &lt;code&gt;/etc/systemd/zram-generator.conf&lt;/code&gt;，内容如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[zram0]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;zram-size = min(ram / 2, 8192) # 取内存一半或 8 GiB 的较小值
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;compression-algorithm = zstd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;下次重启后会自动生效。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;固态硬盘开启 &lt;a class="link" href="https://wiki.archlinux.org/title/Solid_state_drive#TRIM" target="_blank" rel="noopener"
 &gt;&lt;strong&gt;TRIM 定时器&lt;/strong&gt;&lt;/a&gt;
，机械硬盘请忽略。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; fstrim.timer
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Intel&lt;/strong&gt; CPU 安装
&lt;a class="link" href="https://wiki.archlinux.org/title/CPU_frequency_scaling#thermald" target="_blank" rel="noopener"
 &gt;&lt;strong&gt;Thermald&lt;/strong&gt;&lt;/a&gt;
，防止过热降频。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pacman -S thermald
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; thermald
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;笔记本电脑安装
&lt;a class="link" href="https://wiki.archlinux.org/title/TLP" target="_blank" rel="noopener"
 &gt;&lt;strong&gt;TLP&lt;/strong&gt;&lt;/a&gt;
，节省电量。
屏蔽 &lt;code&gt;systemd-rfkill.service&lt;/code&gt; 服务和 &lt;code&gt;systemd-rfkill.socket&lt;/code&gt; 套接字避免冲突。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pacman -S tlp tlp-rdw
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; tlp.service
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl mask systemd-rfkill.service systemd-rfkill.socket
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;Pacman 与包管理优化&lt;/p&gt;
&lt;p&gt;虽然设置了软件包缓存 &lt;code&gt;@pkg&lt;/code&gt; 子卷，但它不会自动清理。
用以下命令设置定时自动清理。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -S pacman-contrib
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; paccache.timer
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;还可以用钩子在安装的时候自动清理，详细配置参考
&lt;a class="link" href="https://wiki.archlinux.org/title/Pacman#Cleaning_the_package_cache" target="_blank" rel="noopener"
 &gt;Pacman#清理包缓存&lt;/a&gt;
。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;内核参数微调。减少磁盘写入、提升网络和内存响应。&lt;/p&gt;
&lt;p&gt;创建 &lt;code&gt;/etc/sysctl.d/99-custom.conf&lt;/code&gt; 添加以下内容：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 减少交换倾向，尽量多用物理内存，和 Zram 配合&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vm.swappiness&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 在内存压力大时，更激进地使用 Zram&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vm.watermark_boost_factor&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vm.watermark_scale_factor&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;125&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 网络吞吐量优化&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;net.core.default_qdisc&lt;span class="o"&gt;=&lt;/span&gt;fq
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;net.ipv4.tcp_congestion_control&lt;span class="o"&gt;=&lt;/span&gt;bbr
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 减少文件系统日志写入，提升性能，尤其是 Btrfs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vm.dirty_ratio&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vm.dirty_background_ratio&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;（可选）
&lt;a class="link" href="https://wiki.archlinux.org/title/Powertop" target="_blank" rel="noopener"
 &gt;&lt;strong&gt;Powertop&lt;/strong&gt;&lt;/a&gt;
主要用来查看哪些设备耗电高，并不会在后台持续修改系统设置。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pacman -S powertop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;TLP&lt;/strong&gt; 和 &lt;strong&gt;Thermald&lt;/strong&gt; 可以共存：它们的职责不同。一个主攻省电策略，一个主防 CPU 过热，一起用没有问题。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TLP&lt;/strong&gt; 和 &lt;strong&gt;Powertop&lt;/strong&gt; 存在冲突风险：它们本身不冲突，但功能会「打架」。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Powertop&lt;/strong&gt; 有一个 &lt;code&gt;--auto-tune&lt;/code&gt; 功能，运行后会立刻将许多内核参数调到最省电状态。
如果此时 &lt;strong&gt;TLP&lt;/strong&gt; 也在运行，&lt;strong&gt;TLP&lt;/strong&gt; 会按自己的配置文件把设置改回来，两者会反复覆盖相同的设置，导致行为不可预测。&lt;/p&gt;
&lt;p&gt;如果日常使用 &lt;strong&gt;TLP&lt;/strong&gt;，就不要使用 &lt;code&gt;powertop --auto-tune&lt;/code&gt; 来自动优化，更不要把它设成开机自启。
只把 &lt;strong&gt;Powertop&lt;/strong&gt; 当诊断工具用就好。
用 &lt;strong&gt;TLP&lt;/strong&gt; 负责日常的自动化省电，用 &lt;strong&gt;Thermald&lt;/strong&gt; 负责控制温度。
&lt;strong&gt;Powertop&lt;/strong&gt; 只在你需要排查耗电原因时手动运行。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;code&gt;CTRL&lt;/code&gt; + &lt;code&gt;D&lt;/code&gt; 退出 chroot 环境并重启&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;umount -R /mnt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="重启后安装其他软件"&gt;&lt;a href="#%e9%87%8d%e5%90%af%e5%90%8e%e5%ae%89%e8%a3%85%e5%85%b6%e4%bb%96%e8%bd%af%e4%bb%b6" class="header-anchor"&gt;&lt;/a&gt;重启后安装其他软件
&lt;/h2&gt;&lt;p&gt;配置 &lt;strong&gt;Arch Linux CN&lt;/strong&gt; 仓库和 &lt;strong&gt;AUR&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;参考
&lt;a class="link" href="https://mirrors.tuna.tsinghua.edu.cn/help/archlinuxcn/" target="_blank" rel="noopener"
 &gt;清华源帮助&lt;/a&gt;
在 &lt;code&gt;/etc/pacman.conf&lt;/code&gt; 末尾加上&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[archlinuxcn]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;之后安装 &lt;code&gt;archlinuxcn-keyring&lt;/code&gt; 包导入 GPG key。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Sy archlinuxcn-keyring
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;AUR helper&lt;/strong&gt; 推荐 &lt;code&gt;paru&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pacman -Sy paru
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;平时编译 AUR 包时可以多线程，添加环境变量：&lt;code&gt;MAKEFLAGS=&amp;quot;-j$(nproc)&amp;quot;&lt;/code&gt;，这样 &lt;code&gt;makepkg&lt;/code&gt; 会自动用满所有核心。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;显卡驱动（&lt;strong&gt;Intel&lt;/strong&gt; + &lt;strong&gt;NVIDIA&lt;/strong&gt;）。
NVIDIA 已经停止支持我的 MX250 了，因此我安装另一个版本。
如果你的 NVIDIA 显卡还在支持范围，直接安装 &lt;code&gt;nvidia&lt;/code&gt;。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;paru -S mesa vulkan-intel intel-media-driver libva-utils &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; linux-headers nvidia-580xx-dkms nvidia-prime
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;以后可以用 &lt;code&gt;prime-run 程序名&lt;/code&gt; 来指定用 N 卡运行。
&lt;code&gt;nvidia-580xx-dkms&lt;/code&gt; 将以 &lt;strong&gt;DKMS&lt;/strong&gt; 形式安装，需要 &lt;code&gt;linux-headers&lt;/code&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ly&lt;/code&gt;：比较简单的登录管理器，也可以用 &lt;code&gt;sddm&lt;/code&gt; 等好看的代替&lt;/li&gt;
&lt;li&gt;&lt;code&gt;niri&lt;/code&gt;： 可滚动平铺的 &lt;strong&gt;Wayland&lt;/strong&gt; 合成器
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;swaybg&lt;/code&gt;：壁纸工具，不止用于 &lt;code&gt;Sway&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;xwayland-satellite&lt;/code&gt;：在 &lt;strong&gt;XWayland&lt;/strong&gt; 运行 &lt;strong&gt;X11&lt;/strong&gt; 程序&lt;/li&gt;
&lt;li&gt;&lt;code&gt;xdg-desktop-portal-gtk&lt;/code&gt;：&lt;strong&gt;XDG&lt;/strong&gt; 桌面后端（应该可以随着安装依赖直接装上）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;xdg-desktop-portal-gnome&lt;/code&gt;：&lt;code&gt;Niri&lt;/code&gt; 用它截屏（应该也可以跟着安装依赖装上）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;noctalia-shell&lt;/code&gt;：完整的桌面 shell，代替 &lt;code&gt;waybar&lt;/code&gt;、&lt;code&gt;fuzzel&lt;/code&gt;、&lt;code&gt;mako&lt;/code&gt; 等
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cliphist&lt;/code&gt;：剪切板&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wlsunset&lt;/code&gt;：夜间模式支持&lt;/li&gt;
&lt;li&gt;&lt;code&gt;python-pywalfox&lt;/code&gt;：给 &lt;strong&gt;Firefox&lt;/strong&gt; 提供主题同步&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;foot&lt;/code&gt;：比较简单的 &lt;strong&gt;Wayland&lt;/strong&gt; 终端模拟器，也可以用 &lt;code&gt;kitty&lt;/code&gt; 等&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Yazi&lt;/code&gt;：终端文件管理器，更习惯 GUI 可以用 &lt;code&gt;dolphin&lt;/code&gt; 等
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;fd&lt;/code&gt;：文件搜索&lt;/li&gt;
&lt;li&gt;&lt;code&gt;resvg&lt;/code&gt;：SVG 预览&lt;/li&gt;
&lt;li&gt;&lt;code&gt;7zip&lt;/code&gt;：压缩包支持&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fcitx5-rime&lt;/code&gt; 和 &lt;code&gt;rime-ice-pinyin-git&lt;/code&gt;：&lt;strong&gt;雾凇拼音&lt;/strong&gt;，基于 &lt;strong&gt;Rime&lt;/strong&gt; 输入法，&lt;strong&gt;Fcitx5&lt;/strong&gt; 框架
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;fcitx5-nord&lt;/code&gt;：一个主题&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;npm&lt;/code&gt;：&lt;strong&gt;lazyvim&lt;/strong&gt; 的部分插件需要&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ntfs-3g&lt;/code&gt;：用于支持 &lt;strong&gt;NTFS&lt;/strong&gt; 文件系统&lt;/li&gt;
&lt;li&gt;&lt;code&gt;terminus-font&lt;/code&gt;：终端字体，在没加载图形界面时可用，如运行 &lt;code&gt;setfont ter-132b&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;noto-fonts-cjk&lt;/code&gt;：Noto 中文字体&lt;/li&gt;
&lt;li&gt;&lt;code&gt;noto-fonts-emoji&lt;/code&gt;：Noto emoji 字体&lt;/li&gt;
&lt;li&gt;&lt;code&gt;man-db&lt;/code&gt; 和 &lt;code&gt;man-pages-zh_cn&lt;/code&gt;：系统帮助文档&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tree&lt;/code&gt;：查看文件夹的树形结构的终端小工具&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pipewire-audio&lt;/code&gt;、&lt;code&gt;pipewire-alsa&lt;/code&gt;、&lt;code&gt;pipewire-pulse&lt;/code&gt;：多媒体框架，如果没声音就装上&lt;/li&gt;
&lt;li&gt;&lt;code&gt;firefox&lt;/code&gt; &lt;code&gt;firefox-i18n-zh-cn&lt;/code&gt;：火狐和中文包&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chromium&lt;/code&gt;：&lt;del&gt;咕鸽浏览器&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;loupe&lt;/code&gt;：比较简单的图片查看器&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gthumb&lt;/code&gt;：功能多点的图片查看器&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mpv&lt;/code&gt;：音视频播放器&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wps-office-cn&lt;/code&gt;：&lt;strong&gt;WPS&lt;/strong&gt; 个人版
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;wps-office-mime-cn&lt;/code&gt;：MIME 格式支持&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wps-office-mui-zh-cn&lt;/code&gt;：中文语言包&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;github-cli&lt;/code&gt;：&lt;strong&gt;Github&lt;/strong&gt; 的命令行界面客户端，浏览器打不开 Github 时可以作为备选方案。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;安装时说不定会遇到几个选择，以下几个是我的推荐，其它的可以自行决定：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;jack 后端：选择 &lt;code&gt;jack2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;pipewire 后端：选择 &lt;code&gt;wireplumber&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;终端字体：我觉得 &lt;code&gt;noto-fonts&lt;/code&gt; 好看&lt;/li&gt;
&lt;li&gt;nerd 字体：个人选择 &lt;code&gt;ttf-nerd-fonts-symbols&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="系统配置"&gt;&lt;a href="#%e7%b3%bb%e7%bb%9f%e9%85%8d%e7%bd%ae" class="header-anchor"&gt;&lt;/a&gt;系统配置
&lt;/h2&gt;&lt;h3 id="字体"&gt;&lt;a href="#%e5%ad%97%e4%bd%93" class="header-anchor"&gt;&lt;/a&gt;字体
&lt;/h3&gt;&lt;p&gt;添加单独的字体文件，要复制到 &lt;code&gt;~/.local/share/fonts&lt;/code&gt; 里，然后运行命令 &lt;code&gt;fc-cache&lt;/code&gt; 增量更新字体缓存。
也可 &lt;code&gt;fc-cache -fv&lt;/code&gt; 强制重新生成所有缓存并显示过程。
更多内容见
&lt;a class="link" href="https://wiki.archlinux.org/title/Fonts" target="_blank" rel="noopener"
 &gt;字体&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;用户的全局字体设置在 &lt;code&gt;/.config/fontconfig/fonts.conf&lt;/code&gt;，比如指定默认的&lt;strong&gt;无衬线体（sans-serif）&lt;/strong&gt;、&lt;strong&gt;衬线体（serif）&lt;/strong&gt;、&lt;strong&gt;等宽字体（monospace）&lt;/strong&gt;。更多内容见
&lt;a class="link" href="https://wiki.archlinux.org/title/Font_configuration#Fontconfig_configuration" target="_blank" rel="noopener"
 &gt;Fontconfig 配置&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="环境变量"&gt;&lt;a href="#%e7%8e%af%e5%a2%83%e5%8f%98%e9%87%8f" class="header-anchor"&gt;&lt;/a&gt;环境变量
&lt;/h3&gt;&lt;p&gt;系统级别的全局环境变量一般配置在 &lt;code&gt;/etc/environment&lt;/code&gt; 就行。
&lt;code&gt;/etc/profile&lt;/code&gt; 和 &lt;code&gt;/etc/profile.d/&lt;/code&gt; 的作用如有需要自行学习。
各 shell 自己的全局环境变量见各自的配置，如
&lt;a class="link" href="https://wiki.archlinux.org/title/Bash#Configuration_files" target="_blank" rel="noopener"
 &gt;Bash 配置文件&lt;/a&gt;
和
&lt;a class="link" href="https://wiki.archlinux.org/title/Zsh#Startup/Shutdown_files" target="_blank" rel="noopener"
 &gt;Zsh 启动/关闭文件&lt;/a&gt;
。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;systemd&lt;/strong&gt; 的用户环境变量在 &lt;code&gt;~/.config/environment.d/*.conf&lt;/code&gt;。
更详细的可参考
&lt;a class="link" href="https://wiki.archlinux.org/title/Systemd/User#Environment_variables" target="_blank" rel="noopener"
 &gt;systemd 环境变量&lt;/a&gt;
。&lt;/p&gt;
&lt;p&gt;详细内容见 &lt;strong&gt;ArchWiki&lt;/strong&gt; 中
&lt;a class="link" href="https://wiki.archlinux.org/title/Environment_variables" target="_blank" rel="noopener"
 &gt;环境变量&lt;/a&gt;
。&lt;/p&gt;
&lt;h3 id="foot-配置"&gt;&lt;a href="#foot-%e9%85%8d%e7%bd%ae" class="header-anchor"&gt;&lt;/a&gt;Foot 配置
&lt;/h3&gt;&lt;!-- markdownlint-disable MD013 --&gt;
&lt;p&gt;&lt;code&gt;/etc/locale.conf&lt;/code&gt; 的 &lt;code&gt;LANG=en_US.UTF-8&lt;/code&gt; 可能会覆盖 &lt;code&gt;~/.config/environment.d/&lt;/code&gt; 中语言的环境变量，导致 &lt;code&gt;man&lt;/code&gt; 不是中文。
可以在 &lt;code&gt;~/.config/foot/foot.ini&lt;/code&gt; 配置 &lt;code&gt;[environment]&lt;/code&gt;。&lt;/p&gt;
&lt;!-- markdownlint-enable MD013 --&gt;
&lt;p&gt;除此之外，字体类似这么写：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;font&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;Maple Mono NF CN:size=12, Noto Color Emoji:size=12&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="zsh-配置"&gt;&lt;a href="#zsh-%e9%85%8d%e7%bd%ae" class="header-anchor"&gt;&lt;/a&gt;Zsh 配置
&lt;/h3&gt;&lt;p&gt;安装了 &lt;code&gt;grml-zsh-config&lt;/code&gt; 之后会自动加载它的配置。
zsh 自带的初始化步骤挺好的，虽然是全英文，但是可以找 AI 帮忙翻译并出出主意。我的配置文件如下（补全功能还没捣鼓 Zsh 自带的高级配置，回头再搞）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Lines configured by zsh-newuser-install&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;HISTFILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;~/.zsh_history
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;HISTSIZE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;SAVEHIST&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;setopt autocd extendedglob nomatch notify
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;unsetopt beep
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindkey -v
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# End of lines configured by zsh-newuser-install&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# The following lines were added by compinstall&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;zstyle :compinstall filename &lt;span class="s1"&gt;&amp;#39;/home/nacl/.zshrc&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;autoload -Uz compinit
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;compinit
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# End of lines added by compinstall&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;source&lt;/span&gt; /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;source&lt;/span&gt; /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;autoload -Uz promptinit
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;promptinit
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;prompt grml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="yazi-配置"&gt;&lt;a href="#yazi-%e9%85%8d%e7%bd%ae" class="header-anchor"&gt;&lt;/a&gt;Yazi 配置
&lt;/h3&gt;&lt;p&gt;添加 &lt;code&gt;git&lt;/code&gt; 和 &lt;code&gt;vcs-file&lt;/code&gt; 两个插件：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;ya&lt;/span&gt; &lt;span class="nx"&gt;pkg&lt;/span&gt; &lt;span class="nx"&gt;add&lt;/span&gt; &lt;span class="nx"&gt;yazi-rs&lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;plugins&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;git&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;ya&lt;/span&gt; &lt;span class="nx"&gt;pkg&lt;/span&gt; &lt;span class="nx"&gt;add&lt;/span&gt; &lt;span class="nx"&gt;yazi-rs&lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;plugins&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;vcs-files&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;倘若 &lt;strong&gt;Yazi&lt;/strong&gt; 无法打开 WPS 文档、无法默认调用想要的软件打开图片。
需要添加格式关联，在 &lt;code&gt;~/.config/yazi/yazi.toml&lt;/code&gt; 写入 &lt;strong&gt;opener&lt;/strong&gt; 和 &lt;strong&gt;open&lt;/strong&gt; 的 &lt;strong&gt;rules&lt;/strong&gt;即可。
这是我根据
&lt;a class="link" href="https://github.com/sxyazi/yazi/blob/main/yazi-config/preset/yazi-default.toml" target="_blank" rel="noopener"
 &gt;官方的默认配置&lt;/a&gt;
写的：&lt;/p&gt;
&lt;!-- markdownlint-disable MD010 MD013 --&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;opener&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;loupe&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;loupe %s&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;desc&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Open with Loupe&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;orphan&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;for&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;unix&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;wps-office&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;env QT_FONT_DPI=128 wps %s&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;desc&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;WPS&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;orphan&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;open&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;rules&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="c"&gt;# 根据文件名匹配：匹配所有 .doc, .docx, .xls, .xlsx, .ppt, .pptx 文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*.{doc,docx,xls,xlsx,ppt,pptx}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;use&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;wps-office&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="c"&gt;# Folder&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*/&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;use&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;edit&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;open&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;reveal&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="c"&gt;# Text&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;mime&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;text/*&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;use&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;edit&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;reveal&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="c"&gt;# Image&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;mime&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;image/*&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;use&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;loupe&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;open&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;reveal&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="c"&gt;# Media&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;mime&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;{audio,video}/*&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;use&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;play&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;reveal&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="c"&gt;# Code&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;mime&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;application/{json,ndjson,javascript,wine-extension-ini}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;use&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;edit&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;reveal&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="c"&gt;# Archive&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;mime&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;use&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;extract&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;reveal&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="c"&gt;# Empty file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;mime&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;inode/empty&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;use&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;edit&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;reveal&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="c"&gt;# Virtual file system&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;mime&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;vfs/{absent,stale}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;use&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;download&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="c"&gt;# Fallback&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;use&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;open&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;reveal&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;!-- markdownlint-enable MD010 MD013 --&gt;
&lt;h3 id="grub-中文"&gt;&lt;a href="#grub-%e4%b8%ad%e6%96%87" class="header-anchor"&gt;&lt;/a&gt;GRUB 中文
&lt;/h3&gt;&lt;p&gt;如果想让 GRUB 的菜单什么的也设为中文，可以重新生成一下。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cfg" data-lang="cfg"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;grub-mkconfig -o /boot/grub/grub.cfg&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="困难备注"&gt;&lt;a href="#%e5%9b%b0%e9%9a%be%e5%a4%87%e6%b3%a8" class="header-anchor"&gt;&lt;/a&gt;困难备注
&lt;/h2&gt;&lt;h3 id="wps"&gt;&lt;a href="#wps" class="header-anchor"&gt;&lt;/a&gt;WPS
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;WPS&lt;/strong&gt; 的整合版本体、表格或演示无法用启动器打开，可能是本体设为了整合版+系统没……怎么说呢……没联系起来（？）导致的。
先开一次 WPS，比如命令行直接运行 &lt;code&gt;wps&lt;/code&gt;，然后随便开一个文档，新建也行，会弹出设为默认软件的选项。
此时点同意，就会在 &lt;code&gt;.config/mimeapps.conf&lt;/code&gt; 添加格式的关联。&lt;/p&gt;</description></item><item><title>博客备忘</title><link>https://nacl521.netlify.app/p/%E5%8D%9A%E5%AE%A2%E5%A4%87%E5%BF%98/</link><pubDate>Sun, 14 Jul 2024 23:00:00 +0800</pubDate><guid>https://nacl521.netlify.app/p/%E5%8D%9A%E5%AE%A2%E5%A4%87%E5%BF%98/</guid><description>&lt;h2 id="格式约定"&gt;&lt;a href="#%e6%a0%bc%e5%bc%8f%e7%ba%a6%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;格式约定
&lt;/h2&gt;&lt;h3 id="正文"&gt;&lt;a href="#%e6%ad%a3%e6%96%87" class="header-anchor"&gt;&lt;/a&gt;正文
&lt;/h3&gt;&lt;p&gt;由于 Markdown 中单独一个换行符不会作为段落分隔的标志，每句话单独一行我觉得不错，所以我会尽量这样组织 .md 文件。（只要没忘了&lt;/p&gt;
&lt;h4 id="中西文混排"&gt;&lt;a href="#%e4%b8%ad%e8%a5%bf%e6%96%87%e6%b7%b7%e6%8e%92" class="header-anchor"&gt;&lt;/a&gt;中西文混排
&lt;/h4&gt;&lt;p&gt;为了阅读体验，在中西文混排时，单词与汉字之间添加间隔。
若单词前后是标点符号，因标点符号已经起到间隔作用，故不需添加。&lt;/p&gt;
&lt;p&gt;当单词或字母扮演着汉字字词的角色，例如「把这张图片P好了」，不添加间隔也可以接受，但整体上应保持风格一致。&lt;/p&gt;
&lt;p&gt;我尚未学会如何通过 css 或其他代码方案，在中西文间添加间隔，故行文时手动添加空格作为折衷方案。&lt;/p&gt;
&lt;h4 id="标点符号"&gt;&lt;a href="#%e6%a0%87%e7%82%b9%e7%ac%a6%e5%8f%b7" class="header-anchor"&gt;&lt;/a&gt;标点符号
&lt;/h4&gt;&lt;p&gt;参考
&lt;a class="link" href="https://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=22EA6D162E4110E752259661E1A0D0A8" target="_blank" rel="noopener"
 &gt;标点符号用法&lt;/a&gt;
，但引号使用直角引号，如：「吸血鬼讨厌大蒜，因为他们喜欢『不辣的』」。转载引用时，若原文不太规范，但希望保留原文格式时，可能不进行修改。&lt;/p&gt;
&lt;p&gt;标题以竖线分隔类别时左右添加间隔，如「东方 | 钱包空空的博丽灵梦」。&lt;/p&gt;
&lt;h4 id="markdown"&gt;&lt;a href="#markdown" class="header-anchor"&gt;&lt;/a&gt;Markdown
&lt;/h4&gt;&lt;p&gt;超链接单独占一行。一方面便于 Markdown 中单独修改；另一方面，换行时会插入软换行符，在生成时会按西文板式自动添加空格，阅读体验较好。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;点击
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[&lt;span class="nt"&gt;此处&lt;/span&gt;](&lt;span class="na"&gt;https://www.baidu.com/&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;跳转百度
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;站内的超链接也可以用
&lt;a class="link" href="https://gohugo.io/shortcodes/ref/" target="_blank" rel="noopener"
 &gt;&lt;code&gt;永久链接&lt;/code&gt;&lt;/a&gt;
&lt;code&gt;[Link A]({{% ref &amp;quot;/books/book-1&amp;quot; %}})&lt;/code&gt;。
和
&lt;a class="link" href="https://gohugo.io/shortcodes/relref/" target="_blank" rel="noopener"
 &gt;&lt;code&gt;相对永久链接&lt;/code&gt;&lt;/a&gt;
&lt;code&gt;[Link A]({{% relref &amp;quot;/books/book-1&amp;quot; %}})&lt;/code&gt;
。
由于会在编译时检测，当站内跳转的 URL 不存在时会报错，起到检查的作用。
官网文档说它们需要用 &lt;code&gt;{{% %}}&lt;/code&gt; 格式。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;当引用块和列表嵌套时，列表行之间空不空行是不同的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不加空行&lt;/strong&gt;：列表项紧凑，行间距小，像条目清单&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt; &lt;/span&gt;&lt;span class="ge"&gt;* 第一行
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt; &lt;/span&gt;&lt;span class="ge"&gt;* 第二行
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;会生成一个 &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt; 列表，每个 &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; 之间没有额外的间距。
这是最常见的写法，适合普通引用列表。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;加空行&lt;/strong&gt;：列表项松散，条目之间有明显空隙，更像几个要点的分段描述&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt; &lt;/span&gt;&lt;span class="ge"&gt;* 第一行
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="ge"&gt;&amp;gt; * 第二行
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;CommonMark 规定，列表中如果有一个列表项之间有空行隔开，这个列表就变成「松散列表」（loose list）。
每个 &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; 的内容会被包裹在 &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; 标签里，从而产生额外的段落间距。&lt;/p&gt;
&lt;h3 id="front-matter"&gt;&lt;a href="#front-matter" class="header-anchor"&gt;&lt;/a&gt;front matter
&lt;/h3&gt;&lt;p&gt;书写 toml 格式的 front matter 时，优先写单引号。如 &lt;code&gt;title = '博客备忘'&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;各 front matter 没有什么书写的先后顺序，但为了格式统一，我在自己的博客这么约定：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;标题：&lt;code&gt;title&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;描述：&lt;code&gt;summary&lt;/code&gt; 和 &lt;code&gt;description&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;时间：&lt;code&gt;date&lt;/code&gt; 和 &lt;code&gt;lastmod&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;分类：&lt;code&gt;categories&lt;/code&gt; 和 &lt;code&gt;tags&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;URL 一类的：&lt;code&gt;slug&lt;/code&gt;、&lt;code&gt;externalUrl&lt;/code&gt; 之类的&lt;/li&gt;
&lt;li&gt;其他，自行安排&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;分类、标签等关键词的顺序：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有层次关系的关键词，先写大类，如：植物、绿萝。&lt;/li&gt;
&lt;li&gt;先写主干关键词，再写附加关键词，如记录熨衣服的文章：生活、笔记。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="html"&gt;&lt;a href="#html" class="header-anchor"&gt;&lt;/a&gt;html
&lt;/h3&gt;&lt;p&gt;格式规范参考
&lt;a class="link" href="https://www.runoob.com/w3cnote/html-css-guide.html" target="_blank" rel="noopener"
 &gt;前端 HTML-CSS 规范&lt;/a&gt;
、
&lt;a class="link" href="https://www.runoob.com/html/html5-syntax.html" target="_blank" rel="noopener"
 &gt;HTML(5) 代码规范&lt;/a&gt;
。嵌入 html 时，自闭合元素的尾部不添加斜线。如空行，写作 &lt;code&gt;&amp;lt;br&amp;gt;&lt;/code&gt; 而不是 &lt;code&gt;&amp;lt;br /&amp;gt;&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id="功能备忘"&gt;&lt;a href="#%e5%8a%9f%e8%83%bd%e5%a4%87%e5%bf%98" class="header-anchor"&gt;&lt;/a&gt;功能备忘
&lt;/h2&gt;&lt;h3 id="markdown-alert"&gt;&lt;a href="#markdown-alert" class="header-anchor"&gt;&lt;/a&gt;Markdown Alert
&lt;/h3&gt;&lt;!-- markdownlint-disable MD028 --&gt;
&lt;blockquote class="alert alert-note"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;📝&lt;/span&gt;
 &lt;span class="alert-title"&gt;备注&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;突出显示用户应考虑的信息，即便是粗略浏览时。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;blockquote class="alert alert-note"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;📝&lt;/span&gt;
 &lt;span class="alert-title"&gt;自定义标题&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;您还可以为笔记警告提供自定义标题。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;blockquote class="alert alert-tip"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;💡&lt;/span&gt;
 &lt;span class="alert-title"&gt;提示&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;帮助用户更成功的可选信息。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;blockquote class="alert alert-important"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;📌&lt;/span&gt;
 &lt;span class="alert-title"&gt;重要&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;用户成功所必需的关键信息。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;blockquote class="alert alert-warning"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;⚠️&lt;/span&gt;
 &lt;span class="alert-title"&gt;警告&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;由于潜在风险而需要用户立即关注的关键内容。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;blockquote class="alert alert-caution"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;🚨&lt;/span&gt;
 &lt;span class="alert-title"&gt;注意&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;操作的潜在负面后果。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;!-- markdownlint-enable MD028 --&gt;
&lt;h3 id="emoji"&gt;&lt;a href="#emoji" class="header-anchor"&gt;&lt;/a&gt;emoji
&lt;/h3&gt;&lt;p&gt;如
&amp;#x1f44b;
写作：&lt;code&gt;:wave:&lt;/code&gt;。参考
&lt;a class="link" href="https://gohugo.io/quick-reference/emojis/" target="_blank" rel="noopener"
 &gt;Emojis&lt;/a&gt;
。&lt;/p&gt;
&lt;p&gt;附一个 emoji 代码查询网站
&lt;a class="link" href="https://www.webfx.com/tools/emoji-cheat-sheet/" target="_blank" rel="noopener"
 &gt;webfx&lt;/a&gt;
，一个直接复制 emoji 的网站
&lt;a class="link" href="https://emoji6.com/emojiall/" target="_blank" rel="noopener"
 &gt;emoji 大全&lt;/a&gt;
。&lt;/p&gt;
&lt;h3 id="脚注"&gt;&lt;a href="#%e8%84%9a%e6%b3%a8" class="header-anchor"&gt;&lt;/a&gt;脚注
&lt;/h3&gt;&lt;!-- markdownlint-disable MD033 --&gt;

 &lt;blockquote&gt;
 &lt;p&gt;芝士就是力量&lt;br&gt;
— &lt;cite&gt;法国就是培根&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/cite&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;!-- markdownlint-enable MD033 --&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt; &lt;/span&gt;&lt;span class="ge"&gt;芝士就是力量&amp;lt;br&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt; &lt;/span&gt;&lt;span class="ge"&gt;— &amp;lt;cite&amp;gt;法国就是培根[^quote]&amp;lt;/cite&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;Here&amp;rsquo;s a simple footnote,&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; and here&amp;rsquo;s a longer one.&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Here&amp;#39;s a simple footnote,[^1] and here&amp;#39;s a longer one.[^bignote]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Indent paragraphs to include them in the footnote.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="sb"&gt;`{ my code }`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Add as many paragraphs as you like.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="插入-gif"&gt;&lt;a href="#%e6%8f%92%e5%85%a5-gif" class="header-anchor"&gt;&lt;/a&gt;插入 gif
&lt;/h3&gt;&lt;p&gt;Hugo 不支持以 Markdown 插入图片的格式插入 gif，但 Markdown 渲染基于 html，可利用 html 插入图片的方式：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;路径&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="图标--矢量图"&gt;&lt;a href="#%e5%9b%be%e6%a0%87--%e7%9f%a2%e9%87%8f%e5%9b%be" class="header-anchor"&gt;&lt;/a&gt;图标 &amp;amp; 矢量图
&lt;/h3&gt;&lt;p&gt;一些资源网站：
&lt;a class="link" href="https://tabler.io/icons" target="_blank" rel="noopener"
 &gt;tabler&lt;/a&gt;
、
&lt;a class="link" href="https://favicon.io/" target="_blank" rel="noopener"
 &gt;favicon&lt;/a&gt;
、
&lt;a class="link" href="https://fontawesome.com/" target="_blank" rel="noopener"
 &gt;fontawesome&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;对于 SVG 矢量图，&lt;code&gt;fill=&amp;quot;currentColor&amp;quot;&lt;/code&gt; 能跟随深色主题反色。语法参考
&lt;a class="link" href="https://www.runoob.com/svg/svg-example.html" target="_blank" rel="noopener"
 &gt;SVG 基本语法&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="stack-front-matter"&gt;&lt;a href="#stack-front-matter" class="header-anchor"&gt;&lt;/a&gt;Stack front matter
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;description&lt;/strong&gt; &lt;code&gt;string&lt;/code&gt; 单页和列表页&lt;/p&gt;
&lt;p&gt;页面的描述。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;image&lt;/strong&gt; &lt;code&gt;string&lt;/code&gt; 单页和列表页&lt;/p&gt;
&lt;p&gt;页面的特色图片。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;comments&lt;/strong&gt; &lt;code&gt;bool&lt;/code&gt; 单页&lt;/p&gt;
&lt;p&gt;显示或隐藏页面的评论部分。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;license&lt;/strong&gt; &lt;code&gt;string|bool&lt;/code&gt; 单页&lt;/p&gt;
&lt;p&gt;页面的许可证。如果设置为 false，许可证部分将被隐藏。
默认值：&lt;code&gt;.Site.Params.article.license.default&lt;/code&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;math&lt;/strong&gt; &lt;code&gt;bool&lt;/code&gt; 单页&lt;/p&gt;
&lt;p&gt;启用或禁用 KaTeX 渲染。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;toc&lt;/strong&gt; &lt;code&gt;bool&lt;/code&gt; 单页&lt;/p&gt;
&lt;p&gt;显示或隐藏页面的目录。仅在页面至少包含一个标题时才会显示。
默认值：&lt;code&gt;.Site.Params.article.toc&lt;/code&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;style&lt;/strong&gt; &lt;code&gt;map[string]string&lt;/code&gt; 列表页&lt;/p&gt;
&lt;p&gt;出现在文章页面中的分类术语徽章的附加 CSS 样式。&lt;/p&gt;
&lt;p&gt;目前仅支持 background（徽章背景）和 color（文字颜色）。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;keywords&lt;/strong&gt; &lt;code&gt;[]string&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;页面的关键词。对 SEO 很有用。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;readingTime&lt;/strong&gt; &lt;code&gt;bool&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;显示或隐藏页面的阅读时间。
默认值：&lt;code&gt;.Site.Params.article.readingTime&lt;/code&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;从列表中隐藏页面&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;build&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;list&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;always&amp;#34;&lt;/span&gt; &lt;span class="c"&gt;# Change to &amp;#34;never&amp;#34; to hide the page from the list&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="配置文件"&gt;&lt;a href="#%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6" class="header-anchor"&gt;&lt;/a&gt;配置文件
&lt;/h2&gt;&lt;p&gt;根目录的 &lt;code&gt;/hugo.toml&lt;/code&gt;，Hugo 先加载此文件，后加载 &lt;code&gt;config&lt;/code&gt; 文件夹的配置，冲突项会被后者覆盖。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;hasCJKLanguage&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="c"&gt;# Hugo 的功能，采用 CJK 方案估算阅读时长&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# config/_default/markup.toml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;goldmark&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;goldmark&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;extensions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cjk&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;enable&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="c"&gt;#1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;eastAsianLineBreaks&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="c"&gt;#2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;eastAsianLineBreaksStyle&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;css3draft&amp;#39;&lt;/span&gt; &lt;span class="c"&gt;#3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;escapedSpace&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="c"&gt;#4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;为 Markdown 渲染引擎 Goldmark 启用 CJK 板式。见
&lt;a class="link" href="https://gohugo.io/getting-started/configuration-markup/#goldmark" target="_blank" rel="noopener"
 &gt;Hugo 官网配置文档&lt;/a&gt;
和
&lt;a class="link" href="https://github.com/yuin/goldmark?tab=readme-ov-file#cjk-extension" target="_blank" rel="noopener"
 &gt;goldmark 仓库关于 CJK extension 的文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;亚洲书写习惯中，软换行不自动添加空格。
我不启用该功能，因为我正文没有软换行的需求，无需避免该问题，且配合我自己的某些书写习惯，如插入超链接，便于渲染排版。&lt;/li&gt;
&lt;li&gt;Goldmark 针对 CJK 换行有两种风格，Hugo 默认采用 &lt;code&gt;simple&lt;/code&gt;，我采用更复杂的 &lt;code&gt;css3draft&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;设置粗体时遇到标点符号会格式异常，可利用斜杠+空格分隔区域：
所谓&lt;strong&gt;「实践出真知」&lt;/strong&gt;就是如此，写为 &lt;code&gt;所谓\ **「实践出真知」**\ 就是如此&lt;/code&gt;。
不过如果只是为了强调引号内的文字，不需要加粗引号本身。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="hugo"&gt;&lt;a href="#hugo" class="header-anchor"&gt;&lt;/a&gt;Hugo
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;hugo new posts/test/index.md&lt;/code&gt;：根据 &lt;code&gt;archetypes&lt;/code&gt; 文件夹中的模板创建文件&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a class="link" href="https://gohugo.io/shortcodes/highlight" target="_blank" rel="noopener"
 &gt;Hugo 代码高亮 shortcode 官网文档&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;

&lt;details&gt;
 &lt;summary&gt;点击查看，小心剧透&lt;/summary&gt;
 &lt;p&gt;你知道的太多了&lt;/p&gt;
&lt;/details&gt;

&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{&amp;lt; details summary=&amp;#34;点击查看，小心剧透&amp;#34; &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;你知道的太多了
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{&amp;lt; /details &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;使用 Stack 主题的 shortcode 嵌入 B 站视频：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{&amp;lt; bilibili VIDEO_ID PART_NUMBER &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;方括号里是脚注，不论写什么内容，渲染时都会依序显示为序号&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;This is the first footnote.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;Here&amp;rsquo;s one with multiple paragraphs and code.&lt;/p&gt;
&lt;p&gt;Indent paragraphs to include them in the footnote.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;{ my code }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Add as many paragraphs as you like.&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>在 Hugo 博客中嵌入 B 站视频</title><link>https://nacl521.netlify.app/p/%E5%9C%A8-hugo-%E5%8D%9A%E5%AE%A2%E4%B8%AD%E5%B5%8C%E5%85%A5-b-%E7%AB%99%E8%A7%86%E9%A2%91/</link><pubDate>Tue, 06 Feb 2024 21:50:24 +0800</pubDate><guid>https://nacl521.netlify.app/p/%E5%9C%A8-hugo-%E5%8D%9A%E5%AE%A2%E4%B8%AD%E5%B5%8C%E5%85%A5-b-%E7%AB%99%E8%A7%86%E9%A2%91/</guid><description>&lt;blockquote class="alert alert-note"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;📝&lt;/span&gt;
 &lt;span class="alert-title"&gt;备注&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;如今所用的 &lt;strong&gt;Stack&lt;/strong&gt; 主题终于已经支持了 bilibili shortcode，本记录留作纪念吧~&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;h2 id="参数"&gt;&lt;a href="#%e5%8f%82%e6%95%b0" class="header-anchor"&gt;&lt;/a&gt;参数
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: center"&gt;顺序&lt;/th&gt;
 &lt;th style="text-align: center"&gt;参数&lt;/th&gt;
 &lt;th style="text-align: center"&gt;含义&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;1&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;id&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;视频 BV 号，如：&lt;code&gt;BV1aM4y1R77W&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;2&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;sec&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;精准空降秒数，如：&lt;code&gt;50&lt;/code&gt;、&lt;code&gt;125&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;3&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;auto&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;默认不自动播放：&lt;code&gt;false&lt;/code&gt; 或 &lt;code&gt;0&lt;/code&gt;， 自动播放：&lt;code&gt;true&lt;/code&gt; 或 &lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;4&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;muted&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;默认不静音：&lt;code&gt;false&lt;/code&gt; 或 &lt;code&gt;0&lt;/code&gt; ， 静音：&lt;code&gt;true&lt;/code&gt; 或 &lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;5&lt;/td&gt;
 &lt;td style="text-align: center"&gt;&lt;code&gt;danmaku&lt;/code&gt;&lt;/td&gt;
 &lt;td style="text-align: center"&gt;默认加载弹幕：&lt;code&gt;true&lt;/code&gt; 或 &lt;code&gt;1&lt;/code&gt;， 禁用弹幕：&lt;code&gt;false&lt;/code&gt; 或 &lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="语法举例"&gt;&lt;a href="#%e8%af%ad%e6%b3%95%e4%b8%be%e4%be%8b" class="header-anchor"&gt;&lt;/a&gt;语法举例
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;按位置传参&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt; bili BV1DV4y157RD &amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt; bili BV1bY411b7k9 244 true true true &amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;按参数名传参&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt; bili id=BV1Yv4y1o7dw auto=true &amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;折行写也行
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt; bili id=BV1fY4y1F7GL
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; sec=61 auto=false
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; muted=false danmaku=true &amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="代码"&gt;&lt;a href="#%e4%bb%a3%e7%a0%81" class="header-anchor"&gt;&lt;/a&gt;代码
&lt;/h2&gt;&lt;p&gt;创建 &lt;code&gt;/layout/shortcodes/bili.html&lt;/code&gt;，文件名字即 shortcode 调用时的名字。&lt;/p&gt;
&lt;p&gt;输入以下内容：&lt;/p&gt;
&lt;!-- markdownlint-disable MD013 --&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;span class="lnt"&gt;41
&lt;/span&gt;&lt;span class="lnt"&gt;42
&lt;/span&gt;&lt;span class="lnt"&gt;43
&lt;/span&gt;&lt;span class="lnt"&gt;44
&lt;/span&gt;&lt;span class="lnt"&gt;45
&lt;/span&gt;&lt;span class="lnt"&gt;46
&lt;/span&gt;&lt;span class="lnt"&gt;47
&lt;/span&gt;&lt;span class="lnt"&gt;48
&lt;/span&gt;&lt;span class="lnt"&gt;49
&lt;/span&gt;&lt;span class="lnt"&gt;50
&lt;/span&gt;&lt;span class="lnt"&gt;51
&lt;/span&gt;&lt;span class="lnt"&gt;52
&lt;/span&gt;&lt;span class="lnt"&gt;53
&lt;/span&gt;&lt;span class="lnt"&gt;54
&lt;/span&gt;&lt;span class="lnt"&gt;55
&lt;/span&gt;&lt;span class="lnt"&gt;56
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!-- 语法规则举例说明
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt; 1. 按位置传参
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt; &amp;lt; bili BV1DV4y157RD &amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt; &amp;lt; bili BV1bY411b7k9 244 true true true &amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt; 2. 按参数名传参
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt; &amp;lt; bili id=BV1Yv4y1o7dw auto=true &amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt; 折行写也行
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt; &amp;lt; bili id=BV1fY4y1F7GL 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt; sec=61 auto=false 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt; muted=false danmaku=true &amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;--&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!-- 接收参数 --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ $id := (.Get &amp;#34;id&amp;#34;) | default (.Get 0) }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ $sec := (.Get &amp;#34;sec&amp;#34;) | default (.Get 1) }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ $auto := (.Get &amp;#34;auto&amp;#34;) | default (.Get 2) }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ $muted := (.Get &amp;#34;muted&amp;#34;) | default (.Get 3) }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!-- 不能用 default，因为传入 false 或 0 后会被忽略 --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ $danmaku := (.Get 4) }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ if .IsNamedParams }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ $danmaku = (.Get &amp;#34;danmaku&amp;#34;) }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ end }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!-- BV 号 --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ $params := slice &amp;#34;bvid&amp;#34; $id }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!-- 给定精准空降秒数 --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ if gt $sec 0 }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ $params = $params | append &amp;#34;t&amp;#34; $sec }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ end }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!-- 禁止自动播放，除非传入 true 或 1 --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ if ne $auto true 1 }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ $params = $params | append &amp;#34;autoplay&amp;#34; &amp;#34;false&amp;#34; }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ end }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!-- 传入 true 或 1 时静音 --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ if $muted | in (slice true 1) }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ $params = $params | append &amp;#34;muted&amp;#34; &amp;#34;true&amp;#34; }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ end }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!-- 传入 false 或 0 时不加载弹幕 --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ if $danmaku | in (slice false 0) }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ $params = $params | append &amp;#34;danmaku&amp;#34; &amp;#34;false&amp;#34; }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ end }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!-- 嵌入 bilibili 播放框，百分比参数可自定义 --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;margin: 10px 0 20px 0;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;position:relative; padding-bottom:75%; width:100%; height:0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;iframe&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;//player.bilibili.com/player.html?{{ (querify $params) | safeURL }}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;scrolling&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;no&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;border&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;frameborder&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;no&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;framespacing&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;allowfullscreen&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;position:absolute; height: 100%; width: 100%;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;iframe&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;!-- markdownlint-enable MD013 --&gt;
&lt;h2 id="注意"&gt;&lt;a href="#%e6%b3%a8%e6%84%8f" class="header-anchor"&gt;&lt;/a&gt;注意
&lt;/h2&gt;&lt;p&gt;鉴于当前 B 站以 BV 视频号取代旧视频号形式，我估计本代码不兼容远古视频。&lt;/p&gt;
&lt;p&gt;若想兼容，链接的 &lt;code&gt;bvid&lt;/code&gt; 部分，需把参数名中 &lt;code&gt;b&lt;/code&gt; 改成 &lt;code&gt;a&lt;/code&gt;。（防止本博客带有敏感信息，我不打出来了）。&lt;/p&gt;
&lt;p&gt;代码优化思路：根据传入的视频 id 开头是 &lt;code&gt;B&lt;/code&gt; 还是 &lt;code&gt;A&lt;/code&gt; 来单独处理。也可提取视频 id 开头字母存入变量，直接作为参数传入链接进行拼接。&lt;/p&gt;
&lt;h2 id="参考"&gt;&lt;a href="#%e5%8f%82%e8%80%83" class="header-anchor"&gt;&lt;/a&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://cloud.tencent.com/developer/article/2226121" target="_blank" rel="noopener"
 &gt;Hugo 网站优化(8): 书房装上了小电视， 使用 hugo shortcodes 支持 bilibili 视频播放&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://cloud.tencent.com/developer/article/1934127" target="_blank" rel="noopener"
 &gt;B 站视频嵌入自定义网页 bilibili&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://gohugo.io/templates/shortcode-templates/" target="_blank" rel="noopener"
 &gt;Create your own shortcodes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://gohugo.io/functions/go-template/" target="_blank" rel="noopener"
 &gt;Go template functions, operators, and statements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://gohugo.io/functions/collections/querify/" target="_blank" rel="noopener"
 &gt;collections.Querify&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Linux 下制作 U 盘安装镜像</title><link>https://nacl521.netlify.app/p/linux-%E4%B8%8B%E5%88%B6%E4%BD%9C-u-%E7%9B%98%E5%AE%89%E8%A3%85%E9%95%9C%E5%83%8F/</link><pubDate>Mon, 05 Feb 2024 16:18:10 +0800</pubDate><guid>https://nacl521.netlify.app/p/linux-%E4%B8%8B%E5%88%B6%E4%BD%9C-u-%E7%9B%98%E5%AE%89%E8%A3%85%E9%95%9C%E5%83%8F/</guid><description>&lt;blockquote class="alert alert-tip"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;💡&lt;/span&gt;
 &lt;span class="alert-title"&gt;提示&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;&lt;strong&gt;ArchWiki&lt;/strong&gt; 有一篇页面，
&lt;a class="link" href="https://wiki.archlinux.org/title/USB_flash_installation_medium" target="_blank" rel="noopener"
 &gt;USB flash installation medium&lt;/a&gt;
，详细讨论了用 U 盘制作 Arch Linux 安装盘的各种方法，涵盖多平台和多种途径，推荐一阅。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;p&gt;目前最好用的应该算是 &lt;strong&gt;Ventoy&lt;/strong&gt;，推荐这个。
这个不算是烧录，是用自带的引导系统进入存在 U 盘的镜像，比较省事。&lt;/p&gt;
&lt;p&gt;Windows 系统烧录 U 盘镜像建议使用 &lt;strong&gt;Rufus&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;KDE 桌面环境烧录 U 盘镜像可使用 &lt;strong&gt;isoimagewriter&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="查看-u-盘的设备信息"&gt;&lt;a href="#%e6%9f%a5%e7%9c%8b-u-%e7%9b%98%e7%9a%84%e8%ae%be%e5%a4%87%e4%bf%a1%e6%81%af" class="header-anchor"&gt;&lt;/a&gt;查看 U 盘的设备信息
&lt;/h2&gt;&lt;p&gt;首先使用 &lt;code&gt;lsblk&lt;/code&gt; 查看 U 盘的设备信息。&lt;/p&gt;
&lt;p&gt;例如返回的结果可能类似这样：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sda 8:0 0 476.9G 0 disk
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─sda1 8:1 0 512M 0 part /boot
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─sda2 8:2 0 8G 0 part [SWAP]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└─sda3 8:3 0 468.4G 0 part /
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sdb 8:16 1 7.4G 0 disk
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;当前尚未挂载 U 盘，因此 &lt;code&gt;MOUNTPOINTS&lt;/code&gt; 处没有显示挂载位置。&lt;/li&gt;
&lt;li&gt;我的 U 盘大小为 8 GiB，因此我推断出，此时 U 盘的「名字」是 &lt;code&gt;/dev/sdb&lt;/code&gt;。
&lt;ul&gt;
&lt;li&gt;（方法虽然不太「优雅」，但是好用）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="烧录-u-盘"&gt;&lt;a href="#%e7%83%a7%e5%bd%95-u-%e7%9b%98" class="header-anchor"&gt;&lt;/a&gt;烧录 U 盘
&lt;/h2&gt;&lt;p&gt;假设镜像文件路径为：&lt;code&gt;~/archlinux-2024.02.01-x86_64.iso&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;将镜像烧录到 U 盘：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp ~/archlinux-2024.02.01-x86_64.iso /dev/sdb
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="更多命令可供参考"&gt;&lt;a href="#%e6%9b%b4%e5%a4%9a%e5%91%bd%e4%bb%a4%e5%8f%af%e4%be%9b%e5%8f%82%e8%80%83" class="header-anchor"&gt;&lt;/a&gt;更多命令可供参考
&lt;/h2&gt;&lt;p&gt;虽然百度搜到的页面一般都用 &lt;code&gt;dd&lt;/code&gt;，但最好用别的命令。参见：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://unix.stackexchange.com/questions/224277/is-it-better-to-use-cat-dd-pv-or-another-procedure-to-copy-a-cd-dvd/224314#224314" target="_blank" rel="noopener"
 &gt;linux - Is it better to use cat, dd, pv or another procedure to copy a CD/DVD? - Unix &amp;amp; Linux Stack Exchange&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.vidarholen.net/contents/blog/?p=479" target="_blank" rel="noopener"
 &gt;Useless Use Of dd&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat ISO路径 &amp;gt; U盘路径
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp ISO路径 U盘路径
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tee &amp;lt; ISO路径 &amp;gt; U盘路径
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pv ISO路径 &amp;gt; U盘路径
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dd &lt;span class="nv"&gt;bs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;4M &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;ISO路径 &lt;span class="nv"&gt;of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;U盘路径 &lt;span class="nv"&gt;conv&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;fsync &lt;span class="nv"&gt;oflag&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;direct &lt;span class="nv"&gt;status&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;progress
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;dd 的参数可照抄&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Python 生成高强度密码</title><link>https://nacl521.netlify.app/p/python-%E7%94%9F%E6%88%90%E9%AB%98%E5%BC%BA%E5%BA%A6%E5%AF%86%E7%A0%81/</link><pubDate>Sun, 03 Dec 2023 17:18:53 +0800</pubDate><guid>https://nacl521.netlify.app/p/python-%E7%94%9F%E6%88%90%E9%AB%98%E5%BC%BA%E5%BA%A6%E5%AF%86%E7%A0%81/</guid><description>&lt;p&gt;&lt;a class="link" href="https://support.mozilla.org/zh-CN/kb/%E9%80%89%E6%8B%A9%E6%9B%B4%E5%AE%89%E5%85%A8%E7%9A%84%E5%AF%86%E7%A0%81" target="_blank" rel="noopener"
 &gt;选择更安全的密码&lt;/a&gt;
可以帮你看出怎样的密码是个好密码，不过有些平台可用 &lt;strong&gt;两步验证（2FA）&lt;/strong&gt; 代替密码更安全。&lt;/p&gt;
&lt;h2 id="secrets-模块"&gt;&lt;a href="#secrets-%e6%a8%a1%e5%9d%97" class="header-anchor"&gt;&lt;/a&gt;secrets 模块
&lt;/h2&gt;&lt;p&gt;例如，生成长度为八个字符的字母数字密码：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;secrets&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;alphabet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ascii_letters&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;digits&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;password&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;secrets&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;alphabet&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;例如，生成长度为十个字符的字母数字密码，包含至少一个小写字母，至少一个大写字母以及至少三个数字：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;secrets&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;alphabet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ascii_letters&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;digits&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;password&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;secrets&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;alphabet&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;any&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;islower&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="nb"&gt;any&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isupper&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="nb"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isdigit&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="加入特殊字符"&gt;&lt;a href="#%e5%8a%a0%e5%85%a5%e7%89%b9%e6%ae%8a%e5%ad%97%e7%ac%a6" class="header-anchor"&gt;&lt;/a&gt;加入特殊字符
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://docs.python.org/zh-cn/3/library/string.html" target="_blank" rel="noopener"
 &gt;string&lt;/a&gt;
模块提供一些预设字符串常量，如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;string.punctuation&lt;/code&gt;：&lt;code&gt;!&amp;quot;#$%&amp;amp;'()*+,-./:;&amp;lt;=&amp;gt;?@[\]^_`{|}~&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但是有些网站无法使用所有的标点符号，那么这里可以自定义为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;?!@#$%^&amp;amp;*_-+=[]&amp;lt;&amp;gt;;:,.&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="自用代码"&gt;&lt;a href="#%e8%87%aa%e7%94%a8%e4%bb%a3%e7%a0%81" class="header-anchor"&gt;&lt;/a&gt;自用代码
&lt;/h2&gt;&lt;p&gt;以下代码应该不用注释你也能看懂，中文的信息密度值得信赖。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;span class="lnt"&gt;41
&lt;/span&gt;&lt;span class="lnt"&gt;42
&lt;/span&gt;&lt;span class="lnt"&gt;43
&lt;/span&gt;&lt;span class="lnt"&gt;44
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;secrets&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;字母数字&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;digits&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ascii_letters&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;字符&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;字母数字&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;?!@#$%^&amp;amp;*_-+=[]&amp;lt;&amp;gt;;:,.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;字符plus&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;字母数字&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;punctuation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="c1"&gt;# 哪个好看选哪个&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# print(生成密码(字符))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# print(生成密码(字符))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# print(生成密码(字符))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;生成密码&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;生成密码&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;生成密码&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;抽取&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;字符池&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;长度&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;密码&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;secrets&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;字符池&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;长度&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;密码&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;检查&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;密码&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;字符池&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;数量&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;字符池&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;密码&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;数量&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;生成密码&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;字符池&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;字符plus&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;长度&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;数字数&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;小写数&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;大写数&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;特殊字符数&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;密码&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;抽取&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;字符池&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;长度&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;检查&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;密码&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;digits&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;数字数&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;检查&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;密码&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ascii_lowercase&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;小写数&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;检查&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;密码&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ascii_uppercase&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;大写数&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;检查&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;密码&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;punctuation&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;特殊字符数&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;密码&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vm"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item></channel></rss>