
简介这是一份面向程序员、编程学习者及日常文本处理用户的 Notepad 软件包可作为系统记事本的轻量替代用于多语言代码编写、文本编辑与快速调试。压缩包共392个文件、约4.56MB内含exe可执行程序与dll运行库配合xml语言及配置定义、html/css/js界面相关文件另有png、gif、ico图标与ini配置、txt说明等目录完整便于直接部署体验程序、配置与资源文件相对齐全也便于查找和替换。已有1085人学习。软件支持C、Java、Python、PHP等语法高亮提供自动缩进、代码折叠、多文档编辑、正则搜索替换、宏录制回放内置FTP/SFTP可直接编辑远程文件插件系统与主题、快捷键自定义便于扩展。对于需要低资源占用、开箱即用的开发者和初学者可据此快速搭建顺手的编码环境也能在代码重构与文本处理时减少重复操作。1. 别急着双击安装Notepad 该占住工作流的哪个位置很多人对 Notepad 的第一印象还停在「高级记事本」这其实是它最容易让人低估的地方。它内核用的是 Scintilla 编辑组件Win32 原生 C 写出来冷启动几乎感觉不到等待同时带一套完整的插件体系和一个 Boost 正则引擎。也就是说它既能当随手开个 txt 的临时窗口也能承担「看日志、清数据、改配置、临时编译跑一段脚本」这类零碎但要命的活。适合的人很明确手上经常有成百上千行杂文本要过一遍、又不想为这点事打开一个吃 1 GB 内存的 IDE 的从业者。不适合的也明确需要重构、断点调试、依赖图的大型工程别指望它。2. 首次启动就动刀七项默认参数不改后面全是返工默认配置能用但只能算「能打开文件」。真正决定后面顺不顺手的是新建文档的编码、行尾、备份策略和会话行为这几项。它们平时不出声等出问题的时候往往已经过了两小时属于典型的「省五分钟、赔两小时」。这一章按安装选型、编码行尾、备份与大文件三块依次说明。2.1 安装包怎么选安装版、便携版与配置目录的三种落点Notepad 官方提供安装包和 zip 压缩包两种形态差别不在功能而在配置存放在哪里。安装版默认把用户配置写在%APPDATA%\Notepad\插件目录则落在C:\ProgramData\Notepad\pluginszip 解压版走的是「本地配置」模式所有东西都待在程序目录里换机器直接拷文件夹就走。这个差异决定了后面备份、迁移、插件排错的全部逻辑先搞清楚再装。我一般的做法是主力机装安装版因为右键菜单、文件关联、系统托盘这些都省事测试机、客户现场、需要随 U 盘带走的场景用 zip 版避免在某台机器上留下垃圾配置。判断当前实例到底是哪种模式很简单看程序目录下有没有doLocalConf.xml这个空文件——有就是本地配置模式没有就走%APPDATA%。这个文件本身就是个开关装完想改行为手动建一个或删掉都行。配置落点确认清楚之后插件目录和配置目录的关系也要一起记住。安装版在C:\ProgramData\Notepad\plugins下动文件通常需要管理员权限很多人在这里遇到「明明复制了却提示没权限」的困惑本质是权限而不是路径。put 到用户目录下的插件目录则不需要提权但部分版本不识别。手续上省事的做法永远是用插件管理器装手动放 dll 只留给出问题时救急。还有一点容易被忽略同一台机器上如果同时存在安装版和便携版它们的配置是各管各的你在 A 里调好的快捷键在 B 里不会生效。排查「我明明改过设置」这类问题时第一步永远是确认当前打开的到底是哪个实例、配置目录落在哪。这个坑非常朴素但每年都会绊倒一批人。2.2 新建文档、编码与行尾三条默认值决定后面会不会返工编码问题是文本编辑器里最经典的翻车点而它九成以上源于「新建文档」的默认值没设。默认可能是 ANSI 或者系统本地编码你敲了一段中文保存自己打开一切正常发给同事或者提交到仓库就成了一串问号。这不是编辑器坏了是编码在文件落盘那一刻就定死了后面再怎么改显示都只是换个方式解读同一堆字节。正确顺序是打开「设置 → 首选项 → 新建文档」把编码设为 UTF-8无 BOM行尾按你的项目环境定只在 Windows 内部流转的用 CRLF要进 git、要在 Linux 上跑的用 LF默认语言可以设成你写得最多的那个。改完记得点一下「应用到已打开文档」否则老文件还是老样子。这一步做完至少不会在源头制造新的编码事故。已有文件的转换必须显式做菜单「编码」里选「转为 UTF-8 无 BOM」再保存注意是「转为」而不是「以……编码显示」。后者只改看法不改内容看起来正常了实际字节没动下次别人打开照样乱码。区分这两个动作是基本功也是我见过最多人搞混的地方。行尾同理。菜单「编辑 → 行尾格式」里能看到当前文件是 CRLF 还是 LF混用的文件在 git diff 里会显示成整个文件全改实际内容一个字没变。团队协作里建议在项目根放一个.gitattributes把* textauto和必要的eollf写进去让仓库层面统一别指望每个人都记得手动切。编辑器这边只管把你本地新建的文件搞对就行。BOM 是另一个隐形雷。带 BOM 的 UTF-8 在 Windows 里没人看得出问题但传给 shell 脚本解释器、传给某些解析器头三个字节就是非法字符报错信息还完全看不出关联。所以默认值定成「UTF-8 无 BOM」需要 BOM 的场合某些旧版 Excel 场景再手工转方向不要反。2.3 备份、会话与大文件先定好崩溃和卡死的边界打开「设置 → 首选项 → 备份」把「启用会话快照与定期备份」勾上再指定一个备份目录别让它跟系统盘挤在一起。这个功能的价值不在平时而在断电、崩溃、误关窗口的那一次——它能把未保存的缓冲区捞回来。血泪经验是这个选项默认不一定开着很多人是在丢过一次东西之后才回头找它。会话行为也要顺手定一下。「记住当前会话以便下次启动」适合长期开着几十个文件的人代价是每次启动要恢复一大堆标签冷启动变慢如果只是临时开开关关关掉它启动会干脆很多。「文件状态自动检测」那一页里有个「静默更新」的选项建议关掉保留提示。理由在后面的排查章会细说简单讲静默重载意味着外部程序改了文件、你切回来时内容被无声替换如果没有提示你的修改和别人的修改就会互相覆盖。大文件的边界也在这里定。语法高亮是整文件跑的几十兆的日志加上高亮和自动换行卡到无响应是常态不是软件坏了。日常习惯是打开超过二三十兆的文件前先把语言切成「普通文本」、关掉自动换行再打开。真的要看上百兆的日志用less、awk、grep这类工具更合适编辑器的定位不是日志分析器。配置调完之后先做一次备份别等调乱了才想起来。PowerShell 一行就能把整个配置目录压成带时间戳的包# 把 Notepad 的用户配置整目录打成时间戳压缩包动配置前先留一个回滚点 $src Join-Path $env:APPDATA Notepad $dst Join-Path $env:USERPROFILE (npp-config- (Get-Date -Format yyyyMMdd-HHmm) .zip) if (Test-Path $src) { Compress-Archive -Path (Join-Path $src *) -DestinationPath $dst -CompressionLevel Optimal Write-Host 已备份到 $dst } else { # 便携版或本地配置模式下配置在程序目录需要手工改路径 Write-Warning 没有找到 $src确认当前是不是便携版 }$env:APPDATA指向当前用户的漫游配置目录安装版默认就落在这里Compress-Archive是 PowerShell 5 起自带的命令不需要装第三方工具-CompressionLevel Optimal对几十 KB 的 XML 意义不大但打成 zip 之后往网盘一扔比散落一地的 xml 好管理太多。跑完确认一下输出的路径存在、大小不为 0这一步才算真做完。3. 正则替换与列编辑把两小时的手工活压到十分钟文本清洗是 Notepad 最值钱的能力但它的门槛不在功能多少而在「知道什么时候不该用正则」。这一章先把引擎和选项讲清楚再给几类高频场景的具体写法最后补上不用正则也能批量处理的列编辑和宏。3.1 先确认正则引擎Boost 引擎、跨行匹配和两个必勾选项查找替换对话框CtrlH底部的「查找模式」有三个选项普通、扩展、正则。扩展模式处理的是\n、\t、\r、\xNN这类转义字符不涉及模式匹配正则模式才是完整的正则引擎。较新的版本在首选项里可以在 Boost 和 PCRE 两种引擎间切换日常用默认的 Boost 就够了两者的常用语法一致差异主要在少数高级特性上。正则模式下有一个必须理解清楚的复选框「. 匹配新行」。不勾的时候.不跨行一个.*最多吃到行尾就停勾上之后.能吃掉换行符一个.*可以从文件第一行一路吃到你想不到的地方。这两个模式下的同一句正则行为完全不同绝大多数「一替换整篇没了」的事故都出在这里。第二个要养成的习惯是善用「在选区内」。对话框里勾上这个选项替换就只作用于你选中的那一段。清理大文件时我会先用一段小样本试替换、确认效果、再全选替换而不是上来就点「全部替换」。CtrlZ 虽然能救但多层撤销之后你自己也记不清撤到哪一步了。还有一个容易被忘记的细节替换框里的反向引用写法。Boost 引擎支持$1、$2这种形式也支持\1。混着写在不同版本上偶有差异统一用$1更保险。分组多的时候建议用非捕获组(?:...)把不需要引用的括号排除掉编号不容易错位。3.2 四类高频文本清洗日志、CSV、JSON 片段和重复行先准备一份可复现的样本避免拿真实数据练手。下面这段 Python 生成一份两百行左右的访问日志格式固定、字段规整后面所有正则都可以直接对着它试import random, datetime # 固定随机种子保证每次生成的样本一模一样方便对照替换结果 random.seed(20240501) ips [f10.0.{random.randint(0, 3)}.{random.randint(2, 250)} for _ in range(20)] with open(access.log, w, encodingutf-8, newline\n) as f: for i in range(200): t datetime.datetime(2024, 5, 1) datetime.timedelta(secondsi * 7) path f/api/v1/item/{i} f.write(f{t:%Y-%m-%d %H:%M:%S} {random.choice(ips)} GET {path} 200 {random.randint(30, 900)}\n)random.seed固定后样本可复现newline\n强制写 LF避免在 Windows 上生成 CRLF 之后正则里的$行为对不上每行固定六个字段字段之间单空格分隔这样按空白切分的正则不会歧义。生成完用 Notepad 打开确认状态栏显示的是 UTF-8 和 Unix(LF)再往下做。目标查找正则模式替换为关键选项行首加前缀^prod_不勾跨行行尾加逗号$,不勾跨行提取 IP 列^.*?(\d{1,3}(?:\.\d{1,3}){3}).*$$1不勾跨行日期时间转 ISO^(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2}:\d{2})$1T$2不勾跨行三字段重排^(\S)\s(\S)\s(\S)$$3,$2,$1不勾跨行删除纯空白行^[ \t]*$留空不勾跨行第三行那个提取 IP 的写法值得多说一句.*?是非贪婪保证从左往右第一个匹配到 IP 的位置就停(?:\.\d{1,3}){3}用非捕获组把后三段收掉只留一个$1的编号替换时不会因为括号数量算错。如果 IP 在行首^.*?可以简化成^性能更好。表格里「删除纯空白行」故意用了^[ \t]*$而不是^\s*$。原因很实际\s在某些引擎配置下会把换行也算进去替换成空之后可能把相邻两行粘成一行。更稳妥的路径其实是菜单「编辑 → 行操作 → 删除空行」它按行处理不受正则引擎差异影响。正则不是唯一解能用内置行操作解决的优先用行操作。重复行也有类似的处理。菜单「编辑 → 行操作 → 删除连续重复行」只能处理相邻的重复要处理全文件级别的重复标准流程是「编辑 → 行操作 → 按行排序」之后再删连续重复。这个组合看起来土但比写一条巨型正则可靠得多尤其在有几十万行的时候。3.3 列编辑、宏录制与行操作不用正则也能批量处理有些批量修改用正则反而别扭典型场景是给每一行末尾追加不同内容、或者把一段文本按列切开。这时候该用列编辑。按住 Alt 用鼠标左键拖动可以画出一个矩形选区AltShift方向键也能扩列选区。选中之后敲字每一行同一列位置会同时插入改配置文件的批量赋值、给一堆 ID 加引号都快得离谱。列编辑还有一个对话框入口AltC。它支持在选区每行插入递增数字、插入固定文本、对选中列做大小写转换。给一批测试用例编号时我会先用 AltShift 拉出一列再用 AltC 插入从 1 开始的递增序号比写脚本快也比手工敲不容易错。宏是另一条路。默认 CtrlShiftR 开始录制再按一次停止CtrlShiftP 播放。适合「重复十几次就结束」的机械操作改一行格式、跳几行、再改一行。宏是按按键和编辑动作录的不记录鼠标在界面上的所有行为所以录制时尽量用键盘导航比如 CtrlG 跳行、CtrlF 定位这样重放时的行为才可预期。快捷键这块值得单独记几个它们决定了你是「用鼠标点菜单」还是「手指不离键盘」快捷键动作常见用途CtrlD复制当前行快速造几行相似配置CtrlL删除当前行清掉不要的行CtrlShiftUp/Down上移/下移当前行调换配置块顺序CtrlShiftF在文件中查找跨目录搜索CtrlG跳到指定行对着报错行号定位CtrlShiftU / CtrlU转大写 / 转小写常量名统一这些默认值在「设置 → 管理快捷键」里都能改但建议先用默认的等真的形成肌肉记忆再个性化。我见过太多人第一件事就是改一套自认为高效的快捷键结果换台机器就废了反而不如默认方案迁移成本低。4. 插件与脚本入口把编辑器接上编译器和外部工具链编辑器本体只负责「编辑」剩下的事靠插件补齐。这一章说清楚插件怎么装、装哪几个、以及两个最常用的脚本入口分别在什么场景下用最后给两段能直接跑的例子。4.1 插件装法Plugin Admin 与手动放置 dll 的差别插件管理器插件菜单里的 Plugin Admin是首选路径。它会列出可用插件、检查位数匹配、自动处理依赖的 dll装完提示重启。好处是路径和目录结构由它管缺点是它需要一个能访问插件源的环境某些内网机器上会转圈转到超时这时候就得手动装。手动装要记住一条规则较新版本要求插件放在以插件名命名的子文件夹里也就是plugins\Compare\Compare.dll这种结构而不是直接扔进plugins\根目录。这个改动是从 7.6 之后开始的老教程里的「直接把 dll 丢进 plugins 目录」现在已经不生效表现就是重启之后菜单里根本没有那一项。判断办法很简单打开插件目录看一眼层级是不是「一层文件夹 同名 dll」。另一个必查项是位数。64 位主程序只能加载 64 位插件混用会直接静默失败或者报加载错误。查看当前位数的办法是菜单「? → 关于」标题里会写 x64 还是 x86。内网环境里手动搬插件时我会把插件包解压后先看 dll 的位数再复制避免来回折腾。安装版手动装插件还要过权限这一关。C:\ProgramData\Notepad\plugins通常需要管理员权限才能写普通账户复制过去可能看起来成功了实际被重定向到虚拟存储重启后什么都没发生。稳妥的做法是右键以管理员身份运行一次资源管理器再复制或者干脆改用插件管理器。4.2 值得装的六个插件与选型理由插件不是越多越好每多一个就多一份启动开销和一份兼容风险。下面这几个是我在大多数机器上都会装的按用途分类插件解决的问题使用注意Compare两个文件或两个标签页做逐行差异对比比较前先保存未保存的缓冲区不参与对比JSON ViewerJSON 格式化、树形折叠查看几十兆的 JSON 会卡先关语法高亮再格式化XML ToolsXML 格式化、XSD 校验、XPath 查询格式化前确认文件本身结构完整残缺 XML 会直接报错Python Script用 Python 写脚本操作文档、加启动钩子老版本插件跑 Python 2 语法新版本才支持 3NppExec一键保存并执行外部命令编译运行串联控制台编码可能和文件编码不一致输出中文会乱ConverterASCII / HEX 互转、编码转换遇到乱码先用它看一眼原始字节再判断真实编码Compare 的实用场景比想象中多比对两份配置、比对两次导出的数据、比对同事发来的「只改了一行」的脚本。它的对比结果会在两栏之间画连线差异行高亮还能导出成 HTML 报告。注意一点它比的是磁盘上的文件你在标签页里改了没保存参与对比的还是旧内容。JSON Viewer 和 XML Tools 属于「平时不用、用一次省半小时」的类型。接口返回的一坨压缩 JSON 粘进来格式化之后一眼能看出层级XML 同理配上 XPath 查询面板能直接从大配置文件里定位节点。这类插件的价值不在高频而在关键时刻不用切到别的工具去。4.3 Python Script 与 NppExec两个脚本入口的分工这两个插件经常被混为一谈实际定位完全不同。Python Script 是「操作文档本身」——改内容、加文本、批量替换、在打开文件时自动做点什么NppExec 是「调用外部程序」——编译、运行、跑命令行工具再把输出抓回控制台。选错了会很别扭用 NppExec 去做正则替换等于绕一大圈用 Python Script 去调编译器得自己处理进程和输出。Python Script 的脚本放在plugins\config\PythonScript\scripts目录下插件菜单里能直接看到并执行。下面这段把当前文档里所有内网地址替换成占位符方便把日志贴进工单而不泄露环境信息# 用途把当前文档中所有 10.x.x.x 形式的内网地址替换成占位符 import re from Npp import editor, console pattern re.compile(r\b10(?:\.\d{1,3}){3}\b) text editor.getText() hits pattern.findall(text) if hits: editor.beginUndoAction() # 整段替换合并成一次撤销 editor.setText(pattern.sub(10.0.0.0, text)) editor.endUndoAction() console.write(f替换 {len(hits)} 处\n) else: console.write(没有匹配到内网地址\n)editor.getText()取全文editor.setText()整体写回beginUndoAction/endUndoAction把这一串操作压成一次撤销按下 CtrlZ 能整体回退而不是一个字一个字退。\b是词边界防止把110.1.1.1这种误伤。这里特意用setText而不是appendText(len(s), s)——后者的长度参数按字节算遇到中文会截断属于很隐蔽的坑。NppExec 这边最常见的用法是把「保存 → 编译 → 运行」压成一个快捷键。在它的执行框里写NPP_SAVE cd $(CURRENT_DIRECTORY) python -X utf8 $(FILE_NAME)NPP_SAVE先保存当前文件避免跑的还是旧代码cd切到文件所在目录这样脚本里的相对路径才成立-X utf8强制 Python 用 UTF-8 输出缓解控制台中文乱码。常用变量还有$(NAME_PART)不含扩展名的文件名、$(EXT_PART)扩展名、$(FULL_CURRENT_PATH)完整路径写编译命令时用它们拼输出文件名比硬编码强。NppExec 变量含义$(FILE_NAME)当前文件名含扩展名$(NAME_PART)不含扩展名的文件名$(EXT_PART)扩展名不含点$(CURRENT_DIRECTORY)当前文件所在目录$(FULL_CURRENT_PATH)完整路径脚本写完之后在 NppExec 的菜单里存成命名脚本再给它绑一个快捷键整个「写完就跑」的循环就闭合了。第一次用建议先在控制台里手动跑一遍确认路径和解释器都没问题再存成脚本绑键否则排错时会分不清是脚本写错了还是快捷键没生效。5. 避坑与排查五个让老手也翻车的场景下面五条都是「现象看起来像软件坏了、实际是配置或用法问题」的典型。每条按现象、原因、解决三段写遇到对应的症状可以直接对号入座。5.1 打开几十兆的日志直接未响应现象双击一个三四十兆的日志文件进度条走到一半不动标题栏变成「未响应」等几分钟才勉强打开之后每次滚动都卡。原因打开文件时会按扩展名或内容猜测语言一旦套上语法高亮就要对全文做词法分析再加上自动换行开启后要对整篇重排两件事叠在一起就是灾难。文件本身没坏是渲染策略不适合这个体量。解决先关自动换行把语言手动切成「普通文本」再打开。日常可以养成习惯大文件一律先看大小再决定用不用编辑器开。超过百兆的日志用命令行工具过滤出需要的片段再拿进来编辑效率差一个数量级。5.2 自己看着正常别人打开全是乱码现象本地编辑一段中文保存、再打开都正常发给同事或者提交到仓库对方看到的是问号或者方块git diff 里也一片乱码。原因文件是以本地编码保存的当前系统的默认代码页正好能正确解读所以自己看不出问题。一旦换到别的环境同一堆字节被按 UTF-8 解读就崩了。带 BOM 的文件还会在脚本解释器那里多出三个看不见的字节。解决菜单「编码 → 转为 UTF-8 无 BOM」再保存注意是「转为」不是「以……编码显示」。已有的一批文件可以用「在文件中查找」配合批量转换或者写个脚本统一处理。根治办法是改首选项里新建文档的默认编码从源头不再产生新问题。5.3 插件复制进去重启后菜单里没有现象从别处拷了一个插件 dll 放进 plugins 目录重启编辑器插件菜单里找不到对应的项也没有任何报错。原因多数情况是目录层级不对。较新版本要求plugins\插件名\插件名.dll这种两层结构直接放根目录不会被扫描到。其次是位数不匹配64 位主程序加载 32 位 dll 会静默失败。少数情况是文件被系统标记为「来自网络」而阻止加载。解决先核对目录层级再看「? → 关于」里显示的位数和插件是否一致。都不行就改用插件管理器装一遍让它自己处理路径。实在要手装装完打开「插件 → 打开插件文件夹」确认文件真的在那个位置而不是你以为的位置。5.4 切回窗口发现内容被悄悄换掉了现象在编辑器里改了一段切到别的程序做了点事切回来发现文件内容变成了外部程序写入的版本自己的修改没了也没有任何提示。原因「文件状态自动检测」里开了静默更新外部一改动就直接重载覆盖缓冲区或者同时开了两个实例编辑同一个文件后保存的把先保存的盖掉。这个过程没有对话框所以看起来像「玄学丢数据」。解决把静默更新关掉保留「文件已被修改是否重新加载」的提示同时开启定期备份和会话快照真出事了还有的救。多实例场景下尽量保证一个文件只在一个窗口里编辑需要并行处理时用不同的文件。5.5 一条正则下去整篇内容没了现象想删掉某些行写了一条带.*的正则点「全部替换」整个文档变成了一行或者一片空白。原因勾上了「. 匹配新行」.*从第一个匹配位置一路吃到文件末尾替换等于把中间所有内容一次性抹掉。这类误操作在长文件上尤其致命因为屏幕上看不出发生了什么。解决第一时间 CtrlZ多层撤销能救回来。之后重写正则时用[^\n]*代替.*从语法上限制它不跨行或者干脆不勾跨行选项。养成先在选区内试跑的习惯确认无误再放开到全文。这条我吃过不止一次亏现在的固定动作是任何带.*的替换先在十行样本上跑一遍。6. 进阶把配置变成能带走、能回滚的版本化工作台调好一套配置只是开始真正省心的是让它可迁移、可回滚。我的做法是把几个关键 XML 单独拎出来放进一个 git 仓库config.xml主配置、shortcuts.xml快捷键、userDefineLang.xml自定义语言高亮、stylers.xml主题配色。会话文件和缓存不纳入它们每天在变进了版本库只会制造噪音。# 只挑可复用、可读的配置文件纳入版本库跳过 session 与缓存 $cfg Join-Path $env:APPDATA Notepad $repo Join-Path $env:USERPROFILE npp-dotfiles New-Item -ItemType Directory -Force -Path $repo | Out-Null config.xml,shortcuts.xml,userDefineLang.xml,stylers.xml | ForEach-Object { $p Join-Path $cfg $_ if (Test-Path $p) { Copy-Item $p $repo -Force } } git -C $repo init git -C $repo add . git -C $repo commit -m npp baselineNew-Item -Force让目录已存在时不报错可以反复跑ForEach-Object里逐个判断存在再复制缺文件不会中断整个流程git -C指定仓库目录不用先 cd。这套跑完之后换机器就是复制仓库、反拷回配置目录、重启三件事。6.1 迁移之后要验的四个点配置搬过去不等于生效下面四项每次迁移后都过一遍能省掉后面一堆「怎么跟我印象里不一样」验证项怎么验期望结果编码默认值新建空文档看状态栏显示 UTF-8不是 ANSI行尾默认值同上看行尾标识跟目标项目环境一致快捷键按 CtrlShiftF 试一次全局查找对话框正常弹出插件打开插件菜单逐个点名数量与源机器一致第三项容易被跳过但快捷键是最容易在版本升级后失效的部分配置里存的是动作 ID版本变了 ID 对不上就会静默失效。第四项则是确认插件目录没有跟着配置一起搬——插件在 ProgramData 下不在 APPDATA 下只搬配置目录的话插件是不会跟过来的。6.2 一个我固定会加的小钩子Python Script 支持在启动时跑一段脚本我固定放的一个动作是把当前主题、编码、行尾状态打到控制台一行方便一眼确认环境对不对。脚本很短但省掉了「打开设置页翻三层」的动作。这个习惯来自一次迁移事故配置目录拷过去了主题文件没拷界面变成刺眼的白底我对着屏幕愣了半分钟才反应过来是配置不全。从那以后我每次换机器或者升级版本都强制走一遍「备份 → 迁移 → 四项验证 → 跑一次正则替换样本」的流程不管多急都不跳步。文本编辑器的坑不深但都藏在默认值和目录结构里跳一步就可能花一小时找原因。希望帮到你。本文还有配套的精品资源点击获取