用VS Code打造高效LaTeX写作环境:从Overleaf迁移到本地编译 用了三年 Overleaf最后我还是把主力写作环境搬到了 VS Code。不是 Overleaf 不好而是本地环境在某些场景下确实绕不开——比如要对接近百兆的图片、要跑需要本地编译的期刊模板、要跟 Git 仓库配合做版本管理或者在没网的环境里继续赶稿子。VS Code 搭配 LaTeX Workshop 插件组装起来的写作环境在体验上已经非常接近 Overleaf甚至在某些环节做得更好。这篇文章我把从零搭建到编译优化的完整过程写出来包括 TeX 发行版安装、编译引擎选型、中文支持、SyncTeX 正反跳转、期刊模板接入、编译加速、常见报错排查。全程保姆级照着走就能把环境弄好。如果你是第一次接触 LaTeX或者刚从 Overleaf 转过来这一篇足够你上手。1. 为什么我从 Overleaf 转向了 VS Code1.1 Overleaf 到底卡在哪Overleaf 最大的优势是免配置、跨设备、实时协作打开浏览器就能写。但对用了几年的人来说它的短板也很具体免费版编译超时 20 秒稍微大点的文档频繁打满编译队列模板库里下载的某些期刊模板在 Overleaf 上跑得好好的换到本地却一堆报错反过来也一样协作功能在团队里好用但自己写论文时反而不需要那么多在线功能。另一个实际痛点是版本控制。Overleaf 虽然带历史记录但跟 Git 的集成一直是付费功能。把论文放进 Git 仓库做版本管理是本地环境最自然的用法。写完每一版打个 tag出了大问题可以随时回滚这个能力对长周期写作非常宝贵。1.2 VS Code 加 LaTeX 的组合能带来什么VS Code 本身是个通用编辑器配合 LaTeX Workshop 插件后变成了一套完整的 LaTeX IDE核心能力包括代码高亮、自动补全、悬停提示、错误诊断一键编译、一键清理、PDF 预览SyncTeX 正反跳转源码和 PDF 双向定位自定义编译链适配不同模板和引擎集成终端随手跑命令、查日志跟 TeXstudio、TeXmaker 这些传统编辑器相比VS Code 的生态优势最明显。同一个窗口里可以同时处理 Python 脚本、数据处理、文献管理、Git 操作论文写作不是一个孤岛而是一整个工作流的一部分。这套方案特别适合三类人爱折腾配置、喜欢在编辑器上做深度定制的需要本地编译大型文档、处理复杂模板的以及希望写作和代码工作流统一的人。2. 从零开始装好一套 LaTeX 环境2.1 TeX 发行版选择与安装LaTeX 本身只是一套命令宏集真正干活的是 TeX 发行版它把引擎、宏包、字体、文档类打包在一起。主流发行版就两个TeX Live 和 MiKTeX。Windows 上我建议直接上 TeX Live。MiKTeX 的优点是按需安装宏包、速度轻快但它默认会缺一堆包编译时经常网络下载断网环境下直接卡住。TeX Live 一次性装全虽然占硬盘空间大概 6~8 GB但装完之后稳定可靠几乎不用再操心宏包缺失问题。下载 TeX Live 有两种方式。第一种是去官网tug.org/texlive下载 install-tl-windows.exe双击后选择安装目录等 20 到 40 分钟。第二种是国内镜像站比如清华 TUNA 镜像下载 iso 镜像挂载后安装速度更快。安装时记得把“默认纸张大小”设置成 A4如果你人在国内强烈建议改掉这个选项默认 Letter 会导致页面参数跟国内期刊要求对不上。macOS 上直接装 MacTeX它基于 TeX Live额外带了一些 macOS 的图形工具。安装包较大官网下载时如果太慢同样可以找国内镜像。Linux 上用包管理器装就是了Ubuntu/Debian 是sudo apt install texlive-full装完即用也可以用 install-tl 脚本装官方版本但对大多数用户来说发行版仓库里的 texlive-full 已经足够。提示安装 TeX Live 时如果遇到杀毒软件报警属于误报概率更高安装程序只是批量释放大量文件。如果实在不放心装完后手动跑一次tex --version验证即可。2.2 VS Code 安装与插件清单VS Code 直接去官网下载安装包Windows 安装时勾选“添加到 PATH”和“添加到右键菜单”。macOS 上注意如果是 Apple Silicon 芯片要下载 arm64 版本而不是 x64 版本。装完后进入扩展市场按重要性排序核心插件如下LaTeX Workshop整个 LaTeX 工作流的核心编译、预览、跳转全由它搞定LaTeX Utilities提供额外的计数统计、标签查看功能可选中文语言包界面汉化非必需但新手友好GitLens如果你把论文放进 Git 管理这个插件能极大提升 Git 使用体验这里要特别说明一下为什么 LaTeX Workshop 是唯一刚需。它内置了 PDF 查看器不需要额外装 SumatraPDF 或 Skim 也能实现预览和 SyncTeX 跳转。虽然传统方案推荐外部 PDF 阅读器做反向跳转但新版 LaTeX Workshop 内置查看器已经把体验做得不错了少装一个软件少一层麻烦。2.3 写一个 Hello World 验证环境环境装好后新建一个文件夹在 VS Code 里打开然后新建 main.tex写入\documentclass{article} \begin{document} Hello, LaTeX! \end{document}保存文件左侧打开 LaTeX Workshop 面板点击“Build LaTeX project”或者按 CtrlAltB 编译。第一次编译会慢一些因为 TeX Live 需要生成格式文件之后就会快很多。编译完成后会自动弹出 PDF 预览看到 Hello, LaTeX! 就说明环境跑通了。我在这个环节见过不少人卡住原因几乎都指向同一个TeX Live 装完了但 VS Code 里的终端和系统 PATH 没刷新。解决方法是重启 VS Code或者在设置里把 latex 的可执行文件路径补上。如果编译日志提示latex: command not found就在 VS Code 设置里搜 latex-workshop.latex.latexpath把可执行文件目录加进去。3. 编译引擎与 LaTeX Workshop 配置3.1 编译引擎怎么选LaTeX 文档编译时到底选哪个引擎新手最容易迷惑。我按使用场景给你拆清楚pdflatex最传统兼容性最好各种老模板几乎都依赖它。但它默认只支持 ASCII 编码中文必须靠 CTeX 宏包转配置起来麻烦xelatex全面支持 Unicode 和系统字体中文写作首选。用 ctex 宏包加 xeCJK中文支持非常干净lualatex技术更新支持 OpenType 字体排版能力更强但对旧模板兼容性稍差latexmk本身不是引擎而是一个自动化编译脚本。它自动判断要先跑几遍涉及文献时自动调 biber 或 bibtex是实际日常最该用的入口我的结论日常中文论文写作用 latexmk 调 xelatex 作为默认编译链投英文期刊如果模板明确写了用 pdflatex就单独为该模板配置一个 pdflatex 的 recipe。每个模板要求不一样所以学会配置多个 recipe 非常关键。3.2 settings.json 核心配置详解LaTeX Workshop 通过 VS Code 的设置文件控制行为。在设置里搜索“latex-workshop”逐项配置当然可以但直接编辑 settings.json 更高效。下面是我个人常用的配置直接复制到你的 settings.json 里{ latex-workshop.latex.recipes: [ { name: latexmk-xelatex, tools: [latexmk-xelatex] }, { name: pdflatex - bibtex - pdflatex * 2, tools: [pdflatex, bibtex, pdflatex, pdflatex] } ], latex-workshop.latex.tools: [ { name: latexmk-xelatex, command: latexmk, args: [ -xelatex, -synctex1, -interactionnonstopmode, -file-line-error, %DOC% ] }, { name: pdflatex, command: pdflatex, args: [ -synctex1, -interactionnonstopmode, -file-line-error, %DOC% ] } ], latex-workshop.view.pdf.viewer: tab, latex-workshop.synctex.afterBuild.enabled: true, latex-workshop.latex.autoClean.run: onBuilt, latex-workshop.latex.clean.fileTypes: [ *.aux, *.log, *.out, *.fls, *.fdb_latexmk, *.synctex.gz ] }几个关键参数单独说一下-synctex1是开启 SyncTeX 数据的开关没有它正反跳转全部失效数值 1 表示生成压缩的 synctex.gz 文件比不压缩的版本加载更快。-interactionnonstopmode让编译遇到错误时不暂停等待输入否则终端卡在那里等你敲回车自动化流程就断了。-file-line-error让编译器输出“文件:行号:报错信息”格式LaTeX Workshop 靠这个格式把错误定位到源码具体行排查问题效率翻倍这个参数强烈建议加上。%DOC%是 LaTeX Workshop 内置变量表示当前主文件的完整路径。autoClean.run: onBuilt会在每次编译成功后自动清理中间文件保持目录整洁。3.3 中文支持ctex、xeCJK 与字体中文支持是本地 LaTeX 最容易翻车的环节。直接用 pdflatex 编译含中文的文档基本必报错。正确姿势是 xelatex 配合 ctex 宏包。在导言区写\documentclass[UTF8]{ctexart} % 或者 % \usepackage{ctex}ctex 宏包会自动调用 xeCJK接管中文字体选择。默认字体可能是宋体如果系统里没有对应字体可以通过 fontset 参数指定\documentclass[UTF8, fontsetwindows]{ctexart} % macOS 用 fontsetmacnew如果用了自定义字体可以配合 fontspec 宏包指定\usepackage{fontspec} \setCJKmainfont{Noto Serif CJK SC} % 中文字体 \setmainfont{Times New Roman} % 英文字体关于字体选择有个经验国内期刊往往额外要求“中文宋体、英文 Times New Roman”。用 ctex 的 fontset 再微调\setmainfont就能满足。字体安装位置也很重要Windows 上字体安装到系统后 xelatex 能直接识别macOS 也一样Linux 上装完后如果识别不到先执行fc-list :langzh检查字体是否存在再确认字体权限能被普通用户读取。注意xelatex 编译含中文的文档时第一次跑往往会因为生成字体缓存而偏慢这是正常现象。跑完一次之后字体缓存建立速度会明显提升。4. 写作效率提升与常用技巧4.1 SyncTeX 正反跳转让修改快人一步正反跳转是本地写作最爽的功能之一。写论文时改一个段落想看它在 PDF 里长什么样光标停在源码中按 CtrlAltJmacOS 是 CmdAltJPDF 自动定位到对应位置。反过来在 PDF 里看到哪里排版有问题按住 Ctrl 点击那里源码直接跳到对应行。这个来回定位的过程比 Overleaf 里点图标再翻找源码舒服一把。正反跳转依赖 3.2 节里提到的-synctex1参数和latex-workshop.synctex.afterBuild.enabled: true这个配置。如果跳转没反应优先检查两项一是编译日志里有没有SyncTeX result字样二是编译命令里 synctex 参数是否传进去了。大部分跳转失效都是因为换了 recipe 后那个 recipe 的编译命令里漏掉了这个参数。内置 PDF 查看器的跳转体验在最近几个版本已经很稳真的没必要再折腾外部阅读器。我见过很多教程让配 SumatraPDF 或 Skim那是老版本插件的遗留方案现在的内置查看器已经做得足够好。4.2 代码片段与快捷指令写 LaTeX 重复劳动很多尤其是表格、公式、图注这类结构固定的内容。LaTeX Workshop 内置了一些智能提示比如输入\begin会提示补全表格环境输入\includegraphics会提示补全图片参数。但真正提升效率的是自己定义代码片段snippets。在 VS Code 的 User Snippets 里新建一个 latex.json把高频结构存进去。我这里放一段常用的{ Figure: { prefix: fig, body: [ \\begin{figure}[$1], \\centering, \\includegraphics[width$2\\linewidth]{$3}, \\caption{$4}, \\label{fig:$5}, \\end{figure} ] }, Table with booktabs: { prefix: tab-book, body: [ \\begin{table}[$1], \\centering, \\caption{$2}, \\label{tab:$3}, \\begin{tabular}{$4}, \\toprule, $5 \\\\, \\midrule, $6 \\\\, \\bottomrule, \\end{tabular}, \\end{table} ] } }这样输入fig加 Tab一张图的完整结构就出来了光标自动跳转到第一个需要填的位置。代码片段的作用不只是省打字更重要的是结构统一。同一篇论文里的图注格式、表格样式全部一致视觉上更专业。除了片段还可以记住几个常用快捷键CtrlAltB 编译、CtrlAltV 查看 PDF、CtrlAltJ 正向跳转。这三个键常年用肌肉记忆一旦形成写作节奏顺很多。4.3 期刊模板、三线表格、图片定位、跨页表格选题和投稿时期刊模板的接入是刚需。国内外的期刊模板本质上是一个 .cls 文件加若干示例文件把模板下载下来放进你的项目目录用它的主文件作为入口编译即可。常见的英文模板有 IEEEtran、elsarticleElsevier、sn-jnlSpringer Nature中文期刊例如《软件学报》《计算机学报》等也都在官网提供 LaTeX 模板。接入模板最常见的坑有三个一是模板要求的引擎跟你默认配置不一致。IEEEtran 老版本通常要求 pdflatexsn-jnl 有些版本要求 xelatex。解决办法不是全局改默认而是在模板主文件第一行加 magic comment% !TeX program xelatex % !TeX root main.texLaTeX Workshop 看到这两行后会优先按注释指定引擎和主文件编译跟单独为该模板配置 recipe 的效果一样而且不会污染全局设置。这是多模板并行写作时最优雅的解法。二是缺少 .cls 文件。把模板压缩包里的 .cls、.sty 文件放到项目根目录LaTeX 编译时会自动找当前目录的类文件。如果放到了别的地方可以设置TEXINPUTS环境变量指定搜索路径。Windows 上设置用户环境变量即可Linux 和 macOS 则在 shell 配置文件中加export TEXINPUTS:/path/to/templates:注意路径前后要带:后面那个:表示追加默认搜索路径。三是模板自带的示例文档里有大量无关内容。建议先建一个最小文档引一个标题、摘要、正文段落验证模板能跑通之后再慢慢把示例内容换成自己的。接下来讲三个写作中高频的排版问题。图片定位很多人以为加[h]就能把图片放在当前位置结果图片还是跑了。原因是 LaTeX 的浮动体机制优先级是 t、b、phhere只是“优先尝试放这里”。强制这里需要float宏包提供的[H]\usepackage{float} \begin{figure}[H] \centering \includegraphics[width0.8\linewidth]{figures/result.png} \caption{实验结果对比} \label{fig:result} \end{figure}用[H]后图片会严格出现在代码所在位置附近不再漂移。代价是可能留下大片空白排版自由度下降一般用于投稿前定稿阶段。三线表格学术论文规范的三线表用 booktabs 宏包实现代码极简\usepackage{booktabs} \begin{table}[htbp] \centering \begin{tabular}{ccc} \toprule 方法 准确率 耗时(s) \\ \midrule A 85.2 12.3 \\ B 90.1 15.6 \\ \bottomrule \end{tabular} \caption{方法对比} \end{table}\toprule、\midrule、\bottomrule分别控制顶部粗线、中间细线、底部粗线线宽和上下间距都是宏包自动控制好的比自己加\hline美观得多。注意三线表不要画竖线不要加太多横线这是期刊排版的基本原则。表格跨页长表格跨页用 longtable 宏包。把table环境换成longtable并设置跨页表头\usepackage{longtable} \begin{longtable}{ccc} \caption{长时间序列数据统计} \label{tab:long} \\ \toprule 时间 指标A 指标B \\ \midrule \endfirsthead \toprule 时间 指标A 指标B续 \\ \midrule \endhead 数据行... \end{longtable}\endfirsthead里放第一页的表头\endhead里放后续页的表头这样跨页表格每页都有表头评审看起来专业得多。4.4 Word 公式转 LaTeX 的实用路径论文里经常要把 Word 里的公式搬进 LaTeX人工重打一遍效率太低了。我的偏好是先用 Mathpix Snip 截图识别单条公式转成 LaTeX 代码直接粘贴进文档。这个工具的识别率很高日常公式基本一遍过免费额度个人用足够。如果是整个 Word 文档转 LaTeX可以用 pandocpandoc input.docx -o output.tex --extract-media.转换出来的 tex 文件结构会比较乱但胜在一次性把文字、结构、公式都带过来了再花时间手工整理也比在 Word 里重打一遍快。要注意 pandoc 处理 Word 自带公式时部分嵌套结构会变成原始 OMML识别不准的地方还是得 Mathpix 补一刀。此外还有两类小技巧值得记一下LaTeX 里公式转 Word 公式反过来用 pandoc 转换也行但需要加上--mathml参数在 VS Code 里预览公式片段可以用 LaTeX Workshop 的数学预览功能光标放在$...$中间按 CtrlAltShiftL 弹出预览改公式时不用全文编译。5. 编译优化与项目目录管理5.1 增量编译与 latexmk 的自动化机制LaTeX 的编译流程不是一次就完成的简单过程。引用、交叉引用、目录、文献索引每一轮编译都可能改变之前编译的结果所以需要多次编译。latexmk 的职责就是自动判断这个循环要跑几轮并增量地只重跑必要的遍数。latexmk 判断依赖关系靠的是 .fdb_latexmk 文件本质上是一个编译状态数据库。如果你改了文件 Alatexmk 分析依赖后发现只有 A 受影响的宏包被改动就只重编译相关部分而不是从头跑。这正是 latexmk 比手写「pdflatex、bibtex、pdflatex 再 pdflatex」更高的地方手写方案每次都全量跑latexmk 会跳过不必要的遍数。实际体验上一篇稿子只改了一个段落latexmk 从按下编译到 PDF 刷新常常一两秒就完成跟 Overleaf 那种排队十几秒的感觉完全不同。提速的核心不在 CPU而在“少干不必要的事”。为了让 latexmk 别在报错时停下来询问一定带上-interactionnonstopmode。如果你希望编译出错时立刻终止而不是继续空跑可以再加-halt-on-error。我个人的习惯是两者都带报错立刻停下直接在问题定位里看是哪一行出了问题。5.2 中间文件清理与项目目录规划编译一次 LaTeX 会生成一堆中间文件.aux、.log、.out、.toc、.lof、.fls、.fdb_latexmk、.synctex.gz。这些文件是编译过程的一部分但提交 Git 时必须忽略。我建议在项目根目录建.gitignore内容至少包含*.aux *.log *.out *.toc *.lof *.lot *.fls *.fdb_latexmk *.synctex.gz配合 3.2 节里配置的autoClean.run: onBuilt每次编译成功后自动删除这些文件。这样做有两个好处一是 Git 仓库干净diff 只显示你真正改动的内容二是下一次编译时 latexmk 重新生成状态避免旧状态干扰。目录结构也值得花几分钟规划。超过 20 页的文档如果所有内容都堆在一个 tex 文件里找内容会非常痛苦。我的实践是project/ ├── main.tex ├── chapters/ │ ├── intro.tex │ ├── method.tex │ └── experiment.tex ├── figures/ │ ├── fig1.png │ └── fig2.pdf ├── bibliography.bib └── .gitignore主文件里用\input{chapters/intro}或者\include{chapters/intro}引入子文件。区别在于\include会开启独立的 .aux 文件配合\includeonly可以只编译某个章节调试时特别有用。\input则直接把内容嵌入主文件适合少量文件场景。5.3 大型文档性能调优思路当文档体量上去了比如学位论文、大综述编译时间会成为切切实实的痛点。我试过几个有效的优化手段按性价比排序第一写作阶段使用\includeonly只编译当前章节。比如你在写第三章就在主文件导言区写\includeonly{chapters/method}编译时只处理 method.tex其他章节的内容引用和页码可能暂时不对但写作的流畅度完全值得这个代价。定稿排版时再删掉这个命令全量编译。第二使用 LuaLaTeX 的某些场景下可以把字体加载放在缓存里但日常提升不如上面那个明显。更实用的做法是把图片统一压缩尤其是学位论文里大量使用截图、照片PNG 动辄几 MB导成 PDF 之后体积和编译时间都会膨胀。写稿阶段用较低分辨率的版本定稿前再替换高清图能省下大量等待时间。第三打开 LaTeX Workshop 的设置项latex-workshop.latex.build.forceRecipeUsage确保所有编译走同一套 recipe避免配置混乱带来额外的全量编译。提示如果你遇到“编译明明成功了PDF 却没更新”的情况多半是内置 PDF 查看器缓存了旧文件。点击查看器工具栏的刷新按钮或者关闭再打开 PDF 标签页即可。6. 常见问题排查实录6.1 高频报错速查表我把自己这些年遇到的重复率最高的几个问题整理成了表格方便直接对照。报错信息常见原因解决思路command not found: latexmkTeX Live 未加入 PATH重启 VS Code 或手动配置 executable 路径LaTeX Error: File xxx.sty not found宏包缺失tlmgr install xxx或用 TeX Live Manager 安装Undefined control sequence宏包未加载或命令拼写错误搜索报错命令检查宏包使用Package xeCJK Error: The font ... does not exist系统中文字体缺失安装字体或改用 ctex 的 fontset 参数! LaTeX Error: Environment figure undefined文档类不支持 figure确认是否在 article 等标准文档类中或模板要求特殊环境Emergency stop编译被外部中断或输入被等待检查命令是否带-interactionnonstopmodeI cant write on file xxx.pdfPDF 被其他程序占用关闭 PDF 阅读器或刷新内置查看器再重新编译SyncTeX: No synctex file found编译命令漏了-synctex1在 recipe 的 args 中补上参数# 网络较慢时tlmgr 换用国内镜像 tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet6.2 几个我踩过的大坑第一个坑是盲目修改全局默认引擎。我刚用 LaTeX Workshop 时为了跑中文模板把默认编译工具改成 xelatex结果投英文期刊时模板编译出各种奇奇怪怪的宏包兼容问题。后来才学会 magic comment 配合多 recipe每个模板用自己的编译链全局配置保持统一和最小化。现在我的 settings.json 基本固定模板差异全由模板内的% !TeX注释解决。第二个坑是图片编译不出来还找不到根因。有一次一个职责离线的图片编译报错日志里提示的是pdflatex语法问题我排查了半天最后发现图片文件本身是 Photoshop 存出来的特殊 PSD 兼容 PNG颜色空间不符合 PDF 嵌入规范。解决办法是把图片重新导出为规范 PNG 或 EPS。这里建议大家养成习惯论文里的图一律用导出功能生成不要直接从截图工具或社交软件保存这些路径带来的图片文件经常暗藏格式问题。第三个坑发生在 macOS 上。装完 MacTeX 之后VS Code 终端里敲 latex 命令正常但 LaTeX Workshop 编译时提示找不到引擎。原因是没有把/usr/local/texlive/2024/bin/universal-darwin加进 shell 的 PATHVS Code 从图形界面启动时继承的环境变量跟终端不同。解决方法是把 PATH 导出写在~/.zshrc中然后完全退出 VS Code 再重新打开不是刷新窗口是彻底退出环境变量才会生效。第四个坑与 Overleaf 有关。把 Overleaf 项目下载到本地时很多项目根目录缺少.gitignore下载的 zip 里还带有一堆.aux、.log文件。直接放进 Git 仓库会让历史记录变得非常嘈杂。我的习惯是每次从 Overleaf 拉下来先清理中间文件、补上.gitignore确认能本地编译后再提交。6.3 从 Overleaf 平滑迁移的注意事项如果你现在手头有正在 Overleaf 上写的项目要迁到本地别直接下载 zip 就完事。我建议按这个流程走先检查项目用了哪些宏包。打开主文件看\usepackage列表在本地编译一次。通常最容易出问题的三类是需要联网下载的字体宏包、依赖外部程序的 minted 代码高亮、以及 Overleaf 自带但本地 TeX Live 版本较旧的宏包。minted 需要系统装有 Python 和 Pygments本地第一次跑经常在这里栽跟头需要额外安装pip install pygments然后项目中如果有.bib文献文件检查是否有缺失的online条目需要的 URL 字段格式。这些在 Overleaf 上可能因为编译链不同自动容错本地 xelatex 加 biber 的链路上会暴露出来。最后一旦本地验证通过建议把整个项目目录初始化成 Git 仓库按章节提交历史。我见过太多人论文写到送审才发现某一大段误删无法恢复Git 就是那道保险花两分钟初始化省下的是几个月的心惊胆战。写到这里环境、编译、引擎、中文、跳转、模板、提速、排错这几条线已经完整走了一遍。用 VS Code 写 LaTeX 这件事核心思路和 Overleaf 其实并不矛盾——都只是工具关键在于你手上有没有一套自己的可复现流程。我自己的体会是环境搭建本身一次性的成本并不低但一旦跑通并被你的使用习惯打磨好这套流程能持续用很多年从课程作业、期刊论文一路写到学位论文不会再被编辑器本身卡住。如果你刚好决定从 Overleaf 切过来那就按文章顺序把环境搭好拿一份真实的稿子编译一遍跑通之后再谈优化。环境顺手了写作才能真正进入状态。