<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>指北 on September的个人空间</title><link>https://blog.september.win/categories/%E6%8C%87%E5%8C%97/</link><description>Recent content in 指北 on September的个人空间</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Sun, 24 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.september.win/categories/%E6%8C%87%E5%8C%97/index.xml" rel="self" type="application/rss+xml"/><item><title>Git 与 GitHub 核心概念入门笔记</title><link>https://blog.september.win/p/git-github-core-concepts/</link><pubDate>Sun, 24 May 2026 00:00:00 +0000</pubDate><guid>https://blog.september.win/p/git-github-core-concepts/</guid><description>&lt;p&gt;这篇是把一份 Git 与 GitHub 的长笔记重新整理成博客版。原笔记覆盖了从安装配置、初始化仓库，到分支协作、Pull Request、Cherry-pick、Stash、Rebase 等常用操作。&lt;/p&gt;
&lt;p&gt;如果只想记住一句话：Git 负责记录代码历史，GitHub 负责把仓库放到网上协作。前者是版本控制工具，后者是代码托管和协作平台。&lt;/p&gt;
&lt;h2 id="git-和-github-是什么"&gt;Git 和 GitHub 是什么
&lt;/h2&gt;&lt;p&gt;Git 是一个版本控制工具。它解决的问题是：文件改来改去以后，怎么知道每次改了什么、谁改的、什么时候改的，以及怎么回到之前的状态。&lt;/p&gt;
&lt;p&gt;GitHub 是基于 Git 的代码托管平台。它把本地 Git 仓库放到云端，让别人可以浏览、下载、协作、提 Issue、提交 Pull Request。&lt;/p&gt;
&lt;p&gt;可以简单理解为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Git：本地版本管理系统&lt;/li&gt;
&lt;li&gt;GitHub：远程仓库和协作平台&lt;/li&gt;
&lt;li&gt;Repository：一个项目仓库&lt;/li&gt;
&lt;li&gt;Commit：一次历史快照&lt;/li&gt;
&lt;li&gt;Branch：一条开发线&lt;/li&gt;
&lt;li&gt;Pull Request：请求别人合并你的改动&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Git 不依赖 GitHub 也能用，但多人协作和开源项目通常会搭配 GitHub 一起使用。&lt;/p&gt;
&lt;h2 id="准备工作"&gt;准备工作
&lt;/h2&gt;&lt;p&gt;最基础的环境一般包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;li&gt;VS Code&lt;/li&gt;
&lt;li&gt;一个 GitHub 账号&lt;/li&gt;
&lt;li&gt;可选：Codex、Claude Code 这类 AI coding agent&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;安装 Git 后，可以用下面命令确认：&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-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git --version
&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;新电脑第一次使用 Git，建议先配置用户名和邮箱：&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-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global user.name &lt;span class="s2"&gt;&amp;#34;你的名字&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global user.email &lt;span class="s2"&gt;&amp;#34;你的邮箱&amp;#34;&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;这两个信息会写进每次提交记录里，用来标识这次 Commit 是谁提交的。&lt;/p&gt;
&lt;h2 id="初始化仓库"&gt;初始化仓库
&lt;/h2&gt;&lt;p&gt;把一个普通文件夹变成 Git 仓库，可以执行：&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-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git init
&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;/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;.git/
&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;这个目录保存了 Git 的全部版本信息。一般不要手动改它。删除 &lt;code&gt;.git/&lt;/code&gt;，就相当于取消这个文件夹的 Git 管理。&lt;/p&gt;
&lt;p&gt;在 VS Code 里，也可以通过 Source Control 面板点击 &lt;code&gt;Initialize Repository&lt;/code&gt; 完成初始化。&lt;/p&gt;
&lt;h2 id="gitignore-忽略文件"&gt;.gitignore 忽略文件
&lt;/h2&gt;&lt;p&gt;并不是项目里的所有文件都应该提交。&lt;/p&gt;
&lt;p&gt;常见需要忽略的内容包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.env&lt;/code&gt;：可能保存密钥、Token、数据库密码&lt;/li&gt;
&lt;li&gt;&lt;code&gt;node_modules/&lt;/code&gt;：依赖包体积大，可以通过 &lt;code&gt;npm install&lt;/code&gt; 重新安装&lt;/li&gt;
&lt;li&gt;构建产物：例如 &lt;code&gt;dist/&lt;/code&gt;、&lt;code&gt;build/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;日志和缓存文件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以在仓库根目录创建 &lt;code&gt;.gitignore&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;/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;.env
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;node_modules/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dist/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;*.log
&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;h2 id="commit-是一次快照"&gt;Commit 是一次快照
&lt;/h2&gt;&lt;p&gt;Commit 可以理解为给项目拍了一张快照。&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;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git status
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;说明这次改了什么&amp;#34;&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;ul&gt;
&lt;li&gt;&lt;code&gt;git status&lt;/code&gt;：看当前有哪些文件被修改&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git add&lt;/code&gt;：把改动放进暂存区&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git commit&lt;/code&gt;：把暂存区内容保存成一次历史记录&lt;/li&gt;
&lt;/ul&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;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;Add prompt guide category filter&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;Fix homepage sidebar link&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;Translate RenPy interpolation guide&amp;#34;&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;以后回看历史时，Commit Message 是最快的索引。&lt;/p&gt;
&lt;h2 id="工作区暂存区本地仓库远程仓库"&gt;工作区、暂存区、本地仓库、远程仓库
&lt;/h2&gt;&lt;p&gt;理解 Git 最重要的是理解几个区域。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;区域&lt;/th&gt;
 &lt;th&gt;含义&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Working Directory&lt;/td&gt;
 &lt;td&gt;当前文件夹里正在编辑的文件&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Staging Area&lt;/td&gt;
 &lt;td&gt;准备提交的改动，也就是 &lt;code&gt;git add&lt;/code&gt; 后的区域&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Local Repository&lt;/td&gt;
 &lt;td&gt;本地保存的 Commit 历史&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Remote Repository&lt;/td&gt;
 &lt;td&gt;GitHub 上的远程仓库&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&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-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add &lt;span class="c1"&gt;# 工作区 -&amp;gt; 暂存区&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit &lt;span class="c1"&gt;# 暂存区 -&amp;gt; 本地仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git push &lt;span class="c1"&gt;# 本地仓库 -&amp;gt; 远程仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git pull &lt;span class="c1"&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;很多 Git 问题，本质上是在问：这个改动现在在哪个区域？&lt;/p&gt;
&lt;h2 id="撤销操作discardresetrevert"&gt;撤销操作：Discard、Reset、Revert
&lt;/h2&gt;&lt;p&gt;Git 里有好几种“后悔药”，但它们适用场景不同。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;操作&lt;/th&gt;
 &lt;th&gt;作用&lt;/th&gt;
 &lt;th&gt;适合场景&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Discard&lt;/td&gt;
 &lt;td&gt;丢掉工作区未提交的改动&lt;/td&gt;
 &lt;td&gt;文件改坏了，还没 commit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Reset&lt;/td&gt;
 &lt;td&gt;把分支指针退回某个历史状态&lt;/td&gt;
 &lt;td&gt;本地历史需要重写，通常适合未推送的提交&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Revert&lt;/td&gt;
 &lt;td&gt;生成一个反向提交来撤销旧提交&lt;/td&gt;
 &lt;td&gt;已经推送或多人协作时更安全&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;新手最容易混淆 &lt;code&gt;reset&lt;/code&gt; 和 &lt;code&gt;revert&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;简单规则：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自己本地还没推送的提交，可以考虑 &lt;code&gt;reset&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;已经推送到远程、别人可能基于它继续开发的提交，优先用 &lt;code&gt;revert&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;revert&lt;/code&gt; 不会删除历史，而是新增一条“抵消旧改动”的提交，所以更适合团队协作。&lt;/p&gt;
&lt;h2 id="branch-分支"&gt;Branch 分支
&lt;/h2&gt;&lt;p&gt;分支是另一条开发线。&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;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git switch -c feature/login
&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;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git switch main
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git merge feature/login
&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;feature&lt;/code&gt; 分支上尝试新功能，不影响 &lt;code&gt;main&lt;/code&gt; 的稳定状态。&lt;/p&gt;
&lt;p&gt;如果使用 VS Code 或 GitHub Desktop，也可以通过界面创建、切换和删除分支。&lt;/p&gt;
&lt;h2 id="head-是什么"&gt;HEAD 是什么
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;HEAD&lt;/code&gt; 表示当前仓库指向哪一次提交。&lt;/p&gt;
&lt;p&gt;通常情况下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 &lt;code&gt;main&lt;/code&gt; 分支上，&lt;code&gt;HEAD&lt;/code&gt; 指向 &lt;code&gt;main&lt;/code&gt; 的最新提交&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;feature&lt;/code&gt; 分支上，&lt;code&gt;HEAD&lt;/code&gt; 指向 &lt;code&gt;feature&lt;/code&gt; 的最新提交&lt;/li&gt;
&lt;li&gt;如果 checkout 到某个历史提交，可能进入 detached HEAD 状态&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Detached HEAD 可以用来看历史代码，但不适合直接长期开发。需要继续改的话，最好从这个状态创建一个新分支。&lt;/p&gt;
&lt;h2 id="worktree-工作树"&gt;Worktree 工作树
&lt;/h2&gt;&lt;p&gt;Worktree 可以让一个仓库同时拥有多个工作目录。&lt;/p&gt;
&lt;p&gt;它适合这种场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主目录保持当前任务&lt;/li&gt;
&lt;li&gt;另开一个目录修 bug&lt;/li&gt;
&lt;li&gt;再开一个目录试验新分支&lt;/li&gt;
&lt;/ul&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-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git worktree add ../project-feature feature-name
&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;AI coding agent 很适合搭配 worktree：每个任务一个独立工作树，互相不干扰，完成后再合并。&lt;/p&gt;
&lt;h2 id="merge-conflict-合并冲突"&gt;Merge Conflict 合并冲突
&lt;/h2&gt;&lt;p&gt;当两个分支修改了同一个文件的同一部分，Git 不知道该保留谁，就会产生冲突。&lt;/p&gt;
&lt;p&gt;解决冲突不是“哪个按钮更高级”，而是人工判断最终文件应该长什么样。&lt;/p&gt;
&lt;p&gt;一般流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开冲突文件&lt;/li&gt;
&lt;li&gt;找到冲突标记&lt;/li&gt;
&lt;li&gt;保留正确内容&lt;/li&gt;
&lt;li&gt;删除冲突标记&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git add&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git commit&lt;/code&gt;&lt;/li&gt;
&lt;/ol&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;/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;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; HEAD
&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; feature
&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;在 VS Code 中可以选择保留当前、保留传入、两者都保留，但最终还是要确认合并后的代码是否合理。&lt;/p&gt;
&lt;h2 id="clonepushpull"&gt;Clone、Push、Pull
&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;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone &amp;lt;url&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git push
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git pull
&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;ul&gt;
&lt;li&gt;&lt;code&gt;clone&lt;/code&gt;：把 GitHub 上的仓库复制到本地&lt;/li&gt;
&lt;li&gt;&lt;code&gt;push&lt;/code&gt;：把本地提交推送到 GitHub&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pull&lt;/code&gt;：把 GitHub 上的新提交拉到本地&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你先在 GitHub 创建仓库，再复制到本地，一般用 &lt;code&gt;clone&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果你先在本地写了项目，再想传到 GitHub，就先 &lt;code&gt;git init&lt;/code&gt;、&lt;code&gt;commit&lt;/code&gt;，再添加远程仓库并 &lt;code&gt;push&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id="github-页面常用功能"&gt;GitHub 页面常用功能
&lt;/h2&gt;&lt;p&gt;GitHub 不只是放代码的网盘，它还有很多协作功能。&lt;/p&gt;
&lt;p&gt;常用区域包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Code：查看代码、下载 zip、复制 clone 地址&lt;/li&gt;
&lt;li&gt;Commit：查看提交历史&lt;/li&gt;
&lt;li&gt;README：项目介绍，一般是仓库首页最重要的说明&lt;/li&gt;
&lt;li&gt;Releases：发布版本和下载构建产物&lt;/li&gt;
&lt;li&gt;Issues：提 bug、需求、讨论&lt;/li&gt;
&lt;li&gt;Pull Requests：代码合并请求&lt;/li&gt;
&lt;li&gt;Actions：自动化构建、测试和部署&lt;/li&gt;
&lt;li&gt;Fork：把别人的项目复制一份到自己账号下&lt;/li&gt;
&lt;li&gt;Star：收藏项目，也能反映项目热度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;快捷键也很实用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/&lt;/code&gt;：搜索仓库内容&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t&lt;/code&gt;：快速找文件&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.&lt;/code&gt;：在浏览器打开网页版 VS Code&lt;/li&gt;
&lt;li&gt;&lt;code&gt;?&lt;/code&gt;：查看 GitHub 快捷键&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="fork-和-pull-request"&gt;Fork 和 Pull Request
&lt;/h2&gt;&lt;p&gt;开源协作通常不是直接改别人的仓库，而是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Fork：把仓库复制到自己账号&lt;/li&gt;
&lt;li&gt;Clone：把自己的 fork 克隆到本地&lt;/li&gt;
&lt;li&gt;Branch：创建新分支修改&lt;/li&gt;
&lt;li&gt;Commit：提交改动&lt;/li&gt;
&lt;li&gt;Push：推送到自己的远程仓库&lt;/li&gt;
&lt;li&gt;Pull Request：请求原项目合并&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Pull Request 不是单纯的“上传代码”，它也是讨论区。维护者可以 review 代码、提出修改意见，直到确认没问题再合并。&lt;/p&gt;
&lt;p&gt;如果你是项目协作者，仓库管理员也可以直接把你加成 collaborator。这样你可以直接 push 到仓库，但更推荐仍然通过分支和 PR 保持审查流程。&lt;/p&gt;
&lt;h2 id="cherry-pick-精选提交"&gt;Cherry-pick 精选提交
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;cherry-pick&lt;/code&gt; 用来把某几个 Commit 单独拿到当前分支。&lt;/p&gt;
&lt;p&gt;例如 feature 分支有三次提交：&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-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;A 修按钮
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;B 改文案
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;C 加功能
&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;A&lt;/code&gt; 合到 main，不想要 &lt;code&gt;B&lt;/code&gt; 和 &lt;code&gt;C&lt;/code&gt;，就可以 cherry-pick &lt;code&gt;A&lt;/code&gt; 的 Commit ID。&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-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git cherry-pick &amp;lt;commit-id&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;p&gt;它适合“只挑某个改动”的场景，不适合替代正常合并流程。&lt;/p&gt;
&lt;h2 id="stash-临时存储"&gt;Stash 临时存储
&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;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git stash
&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;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-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git stash pop
&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;Stash 适合临时切换任务，不应该长期当作保存代码的地方。真正有价值的进度还是应该 commit。&lt;/p&gt;
&lt;h2 id="rebase-变基"&gt;Rebase 变基
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;rebase&lt;/code&gt; 可以把一个分支的提交“挪到”另一个分支最新提交之后，让历史更线性。&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;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git switch feature
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git rebase main
&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;效果是：feature 分支像是基于最新 main 重新开发出来的一样。&lt;/p&gt;
&lt;p&gt;注意：rebase 会改写提交历史。&lt;br&gt;
如果这个分支已经推送并且别人也在用，随便 rebase 再强推会影响别人。所以它更适合个人分支、尚未公开协作的分支。&lt;/p&gt;
&lt;p&gt;简单规则：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自己一个人用的功能分支，可以 rebase&lt;/li&gt;
&lt;li&gt;多人共用的公共分支，谨慎 rebase&lt;/li&gt;
&lt;li&gt;主分支不要乱 rebase&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ai-时代更要懂-git"&gt;AI 时代更要懂 Git
&lt;/h2&gt;&lt;p&gt;现在很多代码可以交给 AI agent 写，但 Git 反而更重要。&lt;/p&gt;
&lt;p&gt;因为 AI 改代码很快，也可能一次改很多文件。如果没有 Git，你很难回答这些问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI 到底改了哪些文件？&lt;/li&gt;
&lt;li&gt;哪次改动引入了问题？&lt;/li&gt;
&lt;li&gt;能不能只保留其中一部分？&lt;/li&gt;
&lt;li&gt;能不能回到 AI 修改前的状态？&lt;/li&gt;
&lt;li&gt;多个 AI 任务能不能并行？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以 AI coding 的基础动作应该是：&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;一个任务 -&amp;gt; 一个分支或 worktree -&amp;gt; 小步 commit -&amp;gt; 审查 diff -&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;p&gt;不要让 AI 在一个长期混乱的工作区里连续改很多轮。每完成一个明确的小功能，就 commit 一次。这样即使后面改坏了，也能清楚地回退。&lt;/p&gt;
&lt;h2 id="总结"&gt;总结
&lt;/h2&gt;&lt;p&gt;Git 的核心不是背命令，而是理解版本流动：&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;工作区 -&amp;gt; 暂存区 -&amp;gt; 本地仓库 -&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;p&gt;GitHub 的核心也不是“上传代码”，而是围绕仓库建立协作流程：&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;Fork -&amp;gt; Branch -&amp;gt; Commit -&amp;gt; Push -&amp;gt; Pull Request -&amp;gt; Review -&amp;gt; Merge
&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;掌握这些概念后，命令只是操作方式。无论是在 VS Code 里点按钮，还是让 AI agent 执行命令，本质都是在移动文件状态、提交历史和分支指针。&lt;/p&gt;
&lt;p&gt;对新手来说，最值得先熟练的不是所有高级命令，而是这几件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;会看 &lt;code&gt;git status&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;会做小步 commit&lt;/li&gt;
&lt;li&gt;会写清楚提交信息&lt;/li&gt;
&lt;li&gt;会用分支隔离任务&lt;/li&gt;
&lt;li&gt;会区分 &lt;code&gt;discard&lt;/code&gt;、&lt;code&gt;reset&lt;/code&gt;、&lt;code&gt;revert&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;会把本地改动 push 到 GitHub&lt;/li&gt;
&lt;li&gt;会通过 Pull Request 协作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些掌握了，Git 和 GitHub 就不再是黑盒，而是你和 AI、队友、未来的自己协作时最可靠的底座。&lt;/p&gt;</description></item><item><title>把 Ren'Py 游戏翻译流程写成一个可复用 Skill</title><link>https://blog.september.win/p/renpy-game-translation-skill/</link><pubDate>Sat, 23 May 2026 00:00:00 +0000</pubDate><guid>https://blog.september.win/p/renpy-game-translation-skill/</guid><description>&lt;p&gt;最近把一套 Ren&amp;rsquo;Py 游戏翻译流程整理成了一个 Codex Skill。它的作用不是“教 AI 怎么随便翻译几句文本”，而是把 Ren&amp;rsquo;Py 汉化里那些很容易被忽略的规则，变成一份可以反复执行的检查清单。&lt;/p&gt;
&lt;p&gt;Ren&amp;rsquo;Py 游戏翻译看起来很简单：找到文本，翻成中文，保存。但真正做起来会发现，问题经常不在“这句话怎么翻”，而在“这句话到底会不会被 Ren&amp;rsquo;Py 正确匹配、正确加载、正确显示”。&lt;/p&gt;
&lt;p&gt;所以这个 Skill 的核心思路是：不要把翻译当成纯文本替换，而要把它当成一个小型补丁工程。&lt;/p&gt;
&lt;h2 id="为什么要写成-skill"&gt;为什么要写成 Skill
&lt;/h2&gt;&lt;p&gt;单次翻译靠经验可以做完，但下一次换一个游戏，很多坑还会再踩一遍。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;old&lt;/code&gt; 字符串被改了一个空格，导致翻译完全匹配不上&lt;/li&gt;
&lt;li&gt;菜单选项带了文字标签或状态后缀，生成的翻译没有覆盖真实显示内容&lt;/li&gt;
&lt;li&gt;变量插值里的人名、阵营名仍然显示英文&lt;/li&gt;
&lt;li&gt;字体不支持中文，结果游戏里全是方块&lt;/li&gt;
&lt;li&gt;直接改原脚本，更新游戏后补丁很难迁移&lt;/li&gt;
&lt;li&gt;批量脚本写文件时编码错了，中文变成乱码或问号&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些不是“翻译水平”问题，而是流程问题。Skill 适合处理的正是这种流程：每次遇到 Ren&amp;rsquo;Py 项目，都按同一套顺序检查、修改和验证。&lt;/p&gt;
&lt;h2 id="工作区应该放在哪里"&gt;工作区应该放在哪里
&lt;/h2&gt;&lt;p&gt;Ren&amp;rsquo;Py 翻译最重要的目录是：&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;game/tl/&amp;lt;language&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;p&gt;Skill 里的第一条规则就是：优先在翻译目录里工作，能不改原始脚本就不改原始脚本。&lt;/p&gt;
&lt;p&gt;原因很现实。原脚本是游戏本体的一部分，直接改它虽然快，但后续更新、分发、回滚都会变麻烦。更稳的方式是把翻译、字体、界面覆盖、语言按钮、默认语言设置等内容尽量放进 &lt;code&gt;game/tl/&amp;lt;language&amp;gt;/&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这样做的好处是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;删除语言文件夹就能恢复原版&lt;/li&gt;
&lt;li&gt;游戏更新时更容易迁移&lt;/li&gt;
&lt;li&gt;补丁边界清楚&lt;/li&gt;
&lt;li&gt;不容易误伤原游戏逻辑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果原游戏没有 &lt;code&gt;.rpy&lt;/code&gt;，只有 &lt;code&gt;.rpyc&lt;/code&gt; 或资源包，那就先处理解包、反编译或生成翻译文件的问题，而不是直接乱改。&lt;/p&gt;
&lt;h2 id="oldnew-不能乱动"&gt;old/new 不能乱动
&lt;/h2&gt;&lt;p&gt;Ren&amp;rsquo;Py 里常见的翻译形式有两种。&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;/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;translate chinese start_abc123:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;这里写翻译后的台词&amp;#34;
&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;/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;translate chinese strings:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; old &amp;#34;Start&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; new &amp;#34;开始&amp;#34;
&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;old&lt;/code&gt;。&lt;br&gt;
&lt;code&gt;old&lt;/code&gt; 不是给你润色的原文，它是 Ren&amp;rsquo;Py 用来匹配原始文本的钥匙。空格、标点、文本标签、大小写、换行都可能影响匹配。&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;/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;old 保持原样
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;new 写翻译
&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;old&lt;/code&gt; 看起来有点怪，比如带着 &lt;code&gt;{size=}&lt;/code&gt;、颜色标签、状态后缀，也不要顺手清理。真实运行时显示出来的字符串很可能就是这么匹配的。&lt;/p&gt;
&lt;h2 id="菜单和-ui-要单独查"&gt;菜单和 UI 要单独查
&lt;/h2&gt;&lt;p&gt;Ren&amp;rsquo;Py 自动生成翻译文件很有用，但它不一定能覆盖所有运行时可见文本。&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;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;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Character&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;...&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;textbutton&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;...&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;tooltip&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;...&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;renpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;input&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;renpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;notify&lt;/span&gt;&lt;span class="p"&gt;(&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="n"&gt;default&lt;/span&gt; &lt;span class="n"&gt;xxx&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;define&lt;/span&gt; &lt;span class="n"&gt;xxx&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;$&lt;/span&gt; &lt;span class="n"&gt;xxx&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;menu&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;尤其是菜单选项。它们经常带条件、标签、样式或自定义 screen 处理。你在翻译文件里看到的 &lt;code&gt;old &amp;quot;Yes&amp;quot;&lt;/code&gt;，不一定覆盖了运行时真正显示的 &lt;code&gt;{color=#fff}Yes{/color}&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果某个选项死活不翻译，别先怀疑 Ren&amp;rsquo;Py。先把运行时原文和 &lt;code&gt;old&lt;/code&gt; 逐字节对一下，包括空格和标签。&lt;/p&gt;
&lt;h2 id="变量插值是隐藏大坑"&gt;变量插值是隐藏大坑
&lt;/h2&gt;&lt;p&gt;这次整理 Skill 时，最值得单独记下的是变量插值。&lt;/p&gt;
&lt;p&gt;Ren&amp;rsquo;Py 里常见写法是：&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-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;#34;Welcome to [tribe_name], [player_name].&amp;#34;
&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;tribe_name&lt;/code&gt; 的值是 &lt;code&gt;&amp;quot;Wartribe&amp;quot;&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;old &amp;#34;Wartribe&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;new &amp;#34;战族&amp;#34;
&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;[tribe_name]&lt;/code&gt; 插值只是把变量当前值拿出来显示，不会必然再走一遍翻译表。&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;/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;&amp;#34;欢迎来到 [tribe_name!t]，[player_name!t]。&amp;#34;
&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;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;ti&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;h2 id="高级补丁放-zzzrpy"&gt;高级补丁放 zzz.rpy
&lt;/h2&gt;&lt;p&gt;有些问题不是一句 &lt;code&gt;old/new&lt;/code&gt; 能解决的，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;添加语言切换按钮&lt;/li&gt;
&lt;li&gt;设置默认语言&lt;/li&gt;
&lt;li&gt;替换字体&lt;/li&gt;
&lt;li&gt;调整中文 UI 样式&lt;/li&gt;
&lt;li&gt;覆盖 screen&lt;/li&gt;
&lt;li&gt;修正少量源代码层面的文本&lt;/li&gt;
&lt;/ul&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-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;game/tl/chinese/zzz.rpy
&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;/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;init offset = 1
&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;让补丁比原定义更晚加载。这样可以覆盖 screen、style、define 等内容，又不会直接动原文件。&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;/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;define config.default_language = &amp;#34;chinese&amp;#34;
&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;br&gt;
如果用 &lt;code&gt;config.language&lt;/code&gt; 强行指定语言，就可能变成每次启动都锁死语言，不一定符合玩家预期。&lt;/p&gt;
&lt;h2 id="字体不是最后再想的事"&gt;字体不是最后再想的事
&lt;/h2&gt;&lt;p&gt;中文翻译里，字体问题经常到最后才暴露：文本已经翻好了，进游戏一看全是方块。&lt;/p&gt;
&lt;p&gt;Skill 里把字体和样式也放进检查范围。一般有几种处理方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 &lt;code&gt;translate &amp;lt;language&amp;gt; style&lt;/code&gt; 里覆盖样式&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;translate &amp;lt;language&amp;gt; python&lt;/code&gt; 里设置 GUI 变量&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;game/tl/&amp;lt;language&amp;gt;/&lt;/code&gt; 下镜像放置字体资源&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;zzz.rpy&lt;/code&gt; 做语言限定的字体覆盖&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;关键是尽量让字体修复只影响目标语言，不要全局改坏原版 UI。&lt;/p&gt;
&lt;h2 id="不要信任批量替换"&gt;不要信任批量替换
&lt;/h2&gt;&lt;p&gt;批量脚本很诱人，尤其是翻译量大的时候。但 Ren&amp;rsquo;Py 文件里有很多结构性内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;缩进&lt;/li&gt;
&lt;li&gt;引号&lt;/li&gt;
&lt;li&gt;转义符&lt;/li&gt;
&lt;li&gt;文本标签&lt;/li&gt;
&lt;li&gt;插值变量&lt;/li&gt;
&lt;li&gt;&lt;code&gt;%&lt;/code&gt;、&lt;code&gt;\&lt;/code&gt;、&lt;code&gt;/&lt;/code&gt; 这类特殊符号&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果脚本没有严格按 UTF-8 读写，中文很容易变成乱码、问号或损坏标签。&lt;/p&gt;
&lt;p&gt;所以 Skill 里明确写了：在 Windows 上做批量编辑时，要使用明确的 UTF-8 读写方式。改完后要扫一遍：&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-text" data-lang="text"&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;损坏的 {tag}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;损坏的 [variable]
&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;翻译文件不是普通 Markdown，不能只看文本大概对不对。&lt;/p&gt;
&lt;h2 id="验证要看三个文件"&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;/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;errors.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;traceback.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;text_overflow.txt
&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;ul&gt;
&lt;li&gt;&lt;code&gt;errors.txt&lt;/code&gt;：生成或启动阶段的问题&lt;/li&gt;
&lt;li&gt;&lt;code&gt;traceback.txt&lt;/code&gt;：运行时崩溃&lt;/li&gt;
&lt;li&gt;&lt;code&gt;text_overflow.txt&lt;/code&gt;：文本溢出、排版放不下&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;还要实际测试：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主菜单&lt;/li&gt;
&lt;li&gt;设置界面&lt;/li&gt;
&lt;li&gt;语言切换&lt;/li&gt;
&lt;li&gt;存档读档&lt;/li&gt;
&lt;li&gt;代表性对话&lt;/li&gt;
&lt;li&gt;选项菜单&lt;/li&gt;
&lt;li&gt;字体显示&lt;/li&gt;
&lt;li&gt;被覆盖的 label 或 screen&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ren&amp;rsquo;Py 翻译不是“文件能保存就完成”，而是“游戏运行时每条路径都能正确显示”。&lt;/p&gt;
&lt;h2 id="这个-skill-最有用的地方"&gt;这个 Skill 最有用的地方
&lt;/h2&gt;&lt;p&gt;我觉得它最有用的不是告诉 AI “请翻译成中文”，而是强迫 AI 先尊重 Ren&amp;rsquo;Py 的工程规则。&lt;/p&gt;
&lt;p&gt;它会提醒我：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不要乱改 &lt;code&gt;old&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;不要直接动原脚本&lt;/li&gt;
&lt;li&gt;不要忽略菜单和 UI&lt;/li&gt;
&lt;li&gt;不要忘记变量插值的 &lt;code&gt;!t&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;不要把字体和排版当成收尾小事&lt;/li&gt;
&lt;li&gt;不要跳过运行验证&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这比单纯提高翻译文风重要得多。&lt;/p&gt;
&lt;h2 id="总结"&gt;总结
&lt;/h2&gt;&lt;p&gt;Ren&amp;rsquo;Py 游戏汉化本质上不是文本替换，而是一套围绕运行时匹配、语言加载、界面覆盖和补丁分发的工程流程。&lt;/p&gt;
&lt;p&gt;把这套流程写成 Skill 之后，AI 就不只是“会翻译”，而是会按固定步骤处理项目结构、翻译文件、UI 字符串、变量插值、字体、补丁和验证。&lt;/p&gt;
&lt;p&gt;下一次再做 Ren&amp;rsquo;Py 游戏翻译时，就不用从零回忆哪些坑要避开。直接让 Skill 接管检查清单，人只需要把关翻译质量和最终体验。&lt;/p&gt;</description></item><item><title>NotebookLM 做 PPT 的正确打开方式：先搭结构，再分章生成</title><link>https://blog.september.win/p/notebooklm-antigravity-ppt-workflow/</link><pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate><guid>https://blog.september.win/p/notebooklm-antigravity-ppt-workflow/</guid><description>&lt;p&gt;最近看了一个 NotebookLM + Antigravity 的进阶教程，里面有一个点很适合单独拎出来写：不要把 NotebookLM 当成“一键生成 PPT”的按钮，而是把它当成一个能理解资料、拆解结构、辅助生产的外脑。&lt;/p&gt;
&lt;p&gt;如果只是把一堆资料扔进去，然后直接让它生成 PPT，结果通常不会太理想。它会很快给你一份看起来完整的幻灯片，但页数有限、内容压缩严重，很多细节被省略。对于读书报告、课程展示、专题分享这种材料量比较大的任务来说，这种“一键生成”更像是摘要，不像是一份真正能拿去讲的 PPT。&lt;/p&gt;
&lt;p&gt;更好的做法，是把 PPT 制作拆成几个阶段。&lt;/p&gt;
&lt;h2 id="先让-notebooklm-搭大纲"&gt;先让 NotebookLM 搭大纲
&lt;/h2&gt;&lt;p&gt;第一步不要急着生成幻灯片，而是先让 NotebookLM 读完资料，输出一个完整大纲。&lt;/p&gt;
&lt;p&gt;这个大纲至少要包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;整份 PPT 要分成几个章节&lt;/li&gt;
&lt;li&gt;每个章节负责讲什么&lt;/li&gt;
&lt;li&gt;每个章节大概需要几页&lt;/li&gt;
&lt;li&gt;每页承担什么信息&lt;/li&gt;
&lt;li&gt;整体的风格、语气和版式方向&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一步的意义是先拿到全局地图。AI 最容易犯的错误，不是不会写，而是在没有全局规划时把复杂内容压扁。先要结构，再要页面，后面的结果会稳定很多。&lt;/p&gt;
&lt;h2 id="再按章节分批生成"&gt;再按章节分批生成
&lt;/h2&gt;&lt;p&gt;NotebookLM 直接生成 PPT 时会遇到页数和信息密度的限制。如果材料很多，可以把生成任务拆开。&lt;/p&gt;
&lt;p&gt;比如一份 60 页左右的专题 PPT，可以拆成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第 1 章：背景与问题&lt;/li&gt;
&lt;li&gt;第 2 章：核心概念&lt;/li&gt;
&lt;li&gt;第 3 章：案例或文本分析&lt;/li&gt;
&lt;li&gt;第 4 章：方法总结&lt;/li&gt;
&lt;li&gt;第 5 章：结论与延伸&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每次只让它生成其中一章。这样做有两个好处：一是绕开单次生成页数太少的问题，二是每一章能写得更细，不会被强行压缩成几页概述。&lt;/p&gt;
&lt;h2 id="用固定提示词保持风格一致"&gt;用固定提示词保持风格一致
&lt;/h2&gt;&lt;p&gt;分章生成的问题也很明显：如果每次提示词不一样，最后合起来就会像几份不同 PPT 拼在一起。&lt;/p&gt;
&lt;p&gt;所以每次生成时，都应该复用同一套风格要求，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;标题层级保持一致&lt;/li&gt;
&lt;li&gt;封面页、章节页和内容页的版式统一&lt;/li&gt;
&lt;li&gt;配色和字体气质统一&lt;/li&gt;
&lt;li&gt;每页信息密度接近&lt;/li&gt;
&lt;li&gt;图文比例一致&lt;/li&gt;
&lt;li&gt;不要突然切换成完全不同的设计风格&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这部分可以理解成给 AI 一份“设计规范”。它不一定能百分百遵守，但有规范总比每次自由发挥要可靠。&lt;/p&gt;
&lt;h2 id="最后人工合并和校对"&gt;最后人工合并和校对
&lt;/h2&gt;&lt;p&gt;AI 生成的内容不能直接当成最终稿。最后还要人工做一次整合。&lt;/p&gt;
&lt;p&gt;我会重点检查这些地方：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;章节之间有没有重复&lt;/li&gt;
&lt;li&gt;页面顺序是否顺畅&lt;/li&gt;
&lt;li&gt;每章开头和结尾是否能接上&lt;/li&gt;
&lt;li&gt;标题风格是否统一&lt;/li&gt;
&lt;li&gt;重点结论有没有被埋掉&lt;/li&gt;
&lt;li&gt;有没有看起来很漂亮但实际上没信息量的页面&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一步很重要。AI 擅长把资料快速摊开，但最后的表达节奏还是要人来把关。PPT 不是资料堆叠，而是一次有顺序的讲述。&lt;/p&gt;
&lt;h2 id="antigravity-的作用"&gt;Antigravity 的作用
&lt;/h2&gt;&lt;p&gt;视频里另一个思路是把 NotebookLM 和 Antigravity 连起来，让一个工具负责理解资料，另一个工具负责操作、检索和自动化。&lt;/p&gt;
&lt;p&gt;这种组合的价值在于：NotebookLM 更像资料库和阅读助手，Antigravity 更像可以执行任务的工作台。前者负责理解，后者负责行动。比如让它自动搜索资料、构建笔记本、整理来源，再反过来指导 PPT 或项目开发。&lt;/p&gt;
&lt;p&gt;这其实是一个很有代表性的 AI 工作流变化：不是让一个工具包办全部，而是让多个 AI 工具各自做擅长的事。&lt;/p&gt;
&lt;h2 id="我自己的理解"&gt;我自己的理解
&lt;/h2&gt;&lt;p&gt;这套方法真正有用的地方，不在于“AI 可以帮我做 PPT”，而在于它把制作 PPT 的流程重新拆开了。&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;/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;找资料 -&amp;gt; 整理资料 -&amp;gt; 写大纲 -&amp;gt; 做页面 -&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;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-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;塞资料 -&amp;gt; 生成 PPT
&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;但更稳的 AI 工作流应该是：&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;塞资料 -&amp;gt; 生成结构 -&amp;gt; 分章生成 -&amp;gt; 统一风格 -&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;p&gt;这比一键生成多了几步，但每一步都更可控。尤其是材料量大、主题复杂、最后还要公开展示的时候，可控性比速度更重要。&lt;/p&gt;
&lt;h2 id="总结"&gt;总结
&lt;/h2&gt;&lt;p&gt;NotebookLM 不应该只被当成 PPT 生成器。它更适合当成资料理解器、结构规划器和内容初稿生成器。&lt;/p&gt;
&lt;p&gt;如果只是想快速做一份十几页的展示，一键生成当然够用。但如果想做一份真正能讲清楚问题的长 PPT，就应该先让它帮你搭结构，再分章生产，最后人工合并和润色。&lt;/p&gt;
&lt;p&gt;AI 做 PPT 的关键不是“少点几下鼠标”，而是把原本混乱的资料整理过程变成一个更清晰的工作流。它节省的不是最后排版那一点时间，而是从资料到表达之间最消耗脑力的那段路。&lt;/p&gt;</description></item><item><title>清理c盘用软件</title><link>https://blog.september.win/p/%E6%B8%85%E7%90%86c%E7%9B%98%E7%94%A8%E8%BD%AF%E4%BB%B6/</link><pubDate>Sun, 19 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.september.win/p/%E6%B8%85%E7%90%86c%E7%9B%98%E7%94%A8%E8%BD%AF%E4%BB%B6/</guid><description>&lt;p&gt;逮到一个很好用的C盘清理软件&lt;/p&gt;
&lt;p&gt;&lt;code&gt;https://privazer.com/zc/download.php&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Markdown 基本语法指北</title><link>https://blog.september.win/p/markdown-%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E6%8C%87%E5%8C%97/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.september.win/p/markdown-%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E6%8C%87%E5%8C%97/</guid><description>&lt;p&gt;几乎所有现代的博客平台和静态网站生成器都完美支持 Markdown。它能让我们在纯文本环境下专注于内容创作，而无需被复杂的排版工具打断思路。&lt;/p&gt;
&lt;p&gt;以下是日常写作中最常用的 Markdown 基本语法。&lt;/p&gt;
&lt;h2 id="1-标题-headings"&gt;1. 标题 (Headings)
&lt;/h2&gt;&lt;p&gt;要在文档中创建标题，请在单词或短语前面添加井号 (&lt;code&gt;#&lt;/code&gt;)。&lt;code&gt;#&lt;/code&gt; 的数量代表了标题的级别。为了兼容性，请务必在 &lt;code&gt;#&lt;/code&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;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;&lt;span class="gh"&gt;# 一级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 二级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 三级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;#### 四级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;##### 五级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&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;h2 id="2-段落与换行-paragraphs--line-breaks"&gt;2. 段落与换行 (Paragraphs &amp;amp; Line Breaks)
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;段落：&lt;/strong&gt;
创建段落非常简单，只需要使用一或多个空白行将连续的文本分隔开即可。不要用空格（spaces）或制表符（tabs）缩进段落。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;换行：&lt;/strong&gt;
如果你想在段落内强行换行（创建 &lt;code&gt;&amp;lt;br&amp;gt;&lt;/code&gt;），请在这一行的末尾添加&lt;strong&gt;两个或多个空格&lt;/strong&gt;，然后按回车键。&lt;/p&gt;
&lt;h2 id="3-强调语法-emphasis"&gt;3. 强调语法 (Emphasis)
&lt;/h2&gt;&lt;p&gt;通过添加星号或下划线，可以轻松实现加粗和斜体效果。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;加粗&lt;/strong&gt;：在单词或短语的前后各添加两个星号或下划线。
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;**加粗文本**&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;__加粗文本__&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;斜体&lt;/strong&gt;：在单词或短语的前后各添加一个星号或下划线。
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;*斜体文本*&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;_斜体文本_&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;加粗斜体&lt;/strong&gt;：前后各添加三个星号或下划线。
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;***加粗且斜体的文本***&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-引用-blockquotes"&gt;4. 引用 (Blockquotes)
&lt;/h2&gt;&lt;p&gt;要在段落前添加块引用，请在段落的第一行或者每一行前面添加一个 &lt;code&gt;&amp;gt;&lt;/code&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;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-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;&amp;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;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;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;h2 id="5-列表-lists"&gt;5. 列表 (Lists)
&lt;/h2&gt;&lt;p&gt;你可以将项目组织成有序列表或无序列表。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;有序列表：&lt;/strong&gt;
在每个列表项前添加数字并紧跟一个英文句点。数字不必按数学顺序排列，但列表应当以数字 1 起始。&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;1.&lt;/span&gt; 第一项
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;2.&lt;/span&gt; 第二项
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;3.&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;无序列表：&lt;/strong&gt;
在每个列表项前添加破折号 (&lt;code&gt;-&lt;/code&gt;)、星号 (&lt;code&gt;*&lt;/code&gt;) 或加号 (&lt;code&gt;+&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;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;-&lt;/span&gt; 苹果
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&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;-&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="6-代码-code"&gt;6. 代码 (Code)
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;行内代码：&lt;/strong&gt;
如果要把句子中的某个单词或短语标记为代码，请将其包裹在反引号 (&lt;code&gt; \&lt;/code&gt; `) 中。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;示例：使用 &lt;code&gt;print(&amp;quot;Hello World&amp;quot;)&lt;/code&gt; 来输出文本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;代码块：&lt;/strong&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;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-python" data-lang="python"&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;greet&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&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="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Hello, &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;!&amp;#34;&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;h2 id="7-分隔线-horizontal-rules"&gt;7. 分隔线 (Horizontal Rules)
&lt;/h2&gt;&lt;p&gt;要创建一条水平分隔线，请在单独一行上使用三个或多个星号 (&lt;code&gt;***&lt;/code&gt;)、破折号 (&lt;code&gt;---&lt;/code&gt;) 或下划线 (&lt;code&gt;___&lt;/code&gt;)，并且不能包含其他内容。&lt;/p&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;/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;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="8-链接-links"&gt;8. 链接 (Links)
&lt;/h2&gt;&lt;p&gt;链接文本放在中括号内，链接地址放在后面的括号内。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;语法：&lt;/strong&gt; &lt;code&gt;[超链接显示名](超链接地址 &amp;quot;可选的提示标题&amp;quot;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;示例：&lt;/strong&gt; 欢迎访问我的 &lt;a class="link" href="https://github.com/September6969/" title="点击访问 GitHub"
 target="_blank" rel="noopener"
 &gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果想直接显示网址并使其可点击，可以用尖括号将网址括起来：&lt;code&gt;&amp;lt;https://example.com&amp;gt;&lt;/code&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;示例：&lt;/strong&gt; &lt;a class="link" href="https://blog.september.win/" target="_blank" rel="noopener"
 &gt;https://blog.september.win/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="9-图片-images"&gt;9. 图片 (Images)
&lt;/h2&gt;&lt;p&gt;插入图片的语法和链接非常相似，只是前面多了一个感叹号 (&lt;code&gt;!&lt;/code&gt;)。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;语法：&lt;/strong&gt; &lt;code&gt;![图片替代文字](图片链接地址 &amp;quot;可选的图片标题&amp;quot;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;示例：&lt;/strong&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;/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="nt"&gt;美丽的风景图&lt;/span&gt;](&lt;span class="na"&gt;https://markdown.com.cn/assets/img/philly-magic-garden.9c0b4415.jpg &amp;#34;Magic Gardens&amp;#34;&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;img alt="美丽的风景图" class="gallery-image" data-flex-basis="320px" data-flex-grow="133" data-title-escaped="Magic Gardens" height="635" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://markdown.com.cn/assets/img/philly-magic-garden.9c0b4415.jpg" srcset="https://blog.september.win/philly-magic-garden.9c0b4415_6843228470022674623_hu_78d82337c1b49d1c.jpg 800w, https://markdown.com.cn/assets/img/philly-magic-garden.9c0b4415.jpg 847w" title="Magic Gardens" width="847"&gt;&lt;/p&gt;
&lt;h2 id="10-转义字符-escaping-characters"&gt;10. 转义字符 (Escaping Characters)
&lt;/h2&gt;&lt;p&gt;如果你需要显示原本用于格式化 Markdown 文档的字符（比如你不希望 &lt;code&gt;#&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-markdown" data-lang="markdown"&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;hr&gt;
&lt;p&gt;掌握了以上基本语法，你就已经具备了使用 Markdown 撰写结构清晰、排版优雅的博客文章的能力。&lt;/p&gt;</description></item><item><title>Markdown 拓展语法指北</title><link>https://blog.september.win/p/markdown-%E6%8B%93%E5%B1%95%E8%AF%AD%E6%B3%95%E6%8C%87%E5%8C%97/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.september.win/p/markdown-%E6%8B%93%E5%B1%95%E8%AF%AD%E6%B3%95%E6%8C%87%E5%8C%97/</guid><description>&lt;p&gt;掌握了基本语法后，Markdown 的扩展语法将为你打开新世界的大门。Markdown 官方标准（Basic Syntax）仅包含基础元素，但在实际应用中，许多解析器（如 GitHub Flavored Markdown, Hugo 等）支持更强大的扩展语法。掌握这些进阶技能，能让你轻松处理表格、代码高亮和任务清单。&lt;/p&gt;
&lt;h2 id="1-表格-tables"&gt;1. 表格 (Tables)
&lt;/h2&gt;&lt;p&gt;要在 Markdown 中创建表格，请使用管道符 &lt;code&gt;|&lt;/code&gt; 分隔各列，并使用三个或多个连字符 &lt;code&gt;---&lt;/code&gt; 创建表头和内容的分隔线。&lt;/p&gt;
&lt;h3 id="对齐方式"&gt;对齐方式
&lt;/h3&gt;&lt;p&gt;通过在分隔线行添加冒号 &lt;code&gt;:&lt;/code&gt;，可以控制列的对齐方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;:---&lt;/code&gt;：左对齐（默认）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;---:&lt;/code&gt;：右对齐&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:---:&lt;/code&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;/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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 表格 | 居中 | $10 |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 扩展 | 左对齐 | $20 |
&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="2-围栏代码块-fenced-code-blocks"&gt;2. 围栏代码块 (Fenced Code Blocks)
&lt;/h2&gt;&lt;p&gt;扩展语法允许你使用三个反引号（```）或三个波浪号（~~~）来包裹多行代码。最强大的功能是支持&lt;strong&gt;语法高亮&lt;/strong&gt;，只需在开头反引号后指定语言名称（如 python, html, css 等）。&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="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;project&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;September&amp;#39;s Blog&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="s2"&gt;&amp;#34;status&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Learning Markdown&amp;#34;&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;h2 id="3-脚注-footnotes"&gt;3. 脚注 (Footnotes)
&lt;/h2&gt;&lt;p&gt;脚注用于对正文中的内容添加补充说明，而不会打断读者的阅读流。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用法&lt;/strong&gt;：在词汇后面使用 &lt;code&gt;[^1]&lt;/code&gt;，然后在文档底部定义说明。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;示例&lt;/strong&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;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-标题-id-heading-ids"&gt;4. 标题 ID (Heading IDs)
&lt;/h2&gt;&lt;p&gt;部分解析器支持给标题指定唯一的 ID，方便在文章内部进行跳转（锚点链接）。&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;&lt;span class="gu"&gt;### 我的目标 {#goals}
&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="5-定义列表-definition-lists"&gt;5. 定义列表 (Definition Lists)
&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;/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&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&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;h2 id="6-删除线-strikethrough"&gt;6. 删除线 (Strikethrough)
&lt;/h2&gt;&lt;p&gt;在文字前后各添加两个波浪号 &lt;code&gt;~~&lt;/code&gt; 来表示已被删除或错误的信息。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;示例&lt;/strong&gt;：&lt;del&gt;这件衣服原价 99 元&lt;/del&gt;，现在只需 19 元。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="7-任务列表-task-lists"&gt;7. 任务列表 (Task Lists)
&lt;/h2&gt;&lt;p&gt;任务列表非常适合管理待办事项或项目进度。使用带有空格或 &lt;code&gt;x&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;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;- [x]&lt;/span&gt; 完成基础语法学习
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [x]&lt;/span&gt; 掌握扩展语法
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&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;h2 id="8-使用-emoji-表情"&gt;8. 使用 Emoji 表情
&lt;/h2&gt;&lt;p&gt;在 Markdown 中添加表情有两种常见方式：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;直接从表情库复制并粘贴 Emoji 符号（如 🚀）。&lt;/li&gt;
&lt;li&gt;使用“短代码”（需解析器支持），例如输入 &lt;code&gt;:smile:&lt;/code&gt; 会被渲染成 😄。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="9-自动网址链接-automatic-url-linking"&gt;9. 自动网址链接 (Automatic URL Linking)
&lt;/h2&gt;&lt;p&gt;许多现代解析器会自动将纯文本形式的 URL（如 &lt;code&gt;https://google.com&lt;/code&gt;）直接转换为可点击的超链接，而无需额外添加中括号。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;通过灵活运用这些扩展语法，你的 Markdown 文档将不仅仅是文字，更是一个具备专业排版水准的数字化作品。&lt;/p&gt;
&lt;p&gt;这些扩展语法能显著提升你博客内容的专业度和丰富度。建议在使用前，先确认你所使用的博客主题或编辑器是否已完整开启这些功能支持。&lt;/p&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;/ol&gt;
&lt;/div&gt;</description></item></channel></rss>