简介:Notepad++ 安装包面向 Windows 平台的程序员、Web 开发者及需要轻量代码编辑器的用户,提供可直接解压使用的安装包,重点包含插件管理器与 emeet 插件,方便在安装后扩展语法高亮、代码折叠、自动补全等编辑能力,并兼顾远程会议或团队协作场景的插件需求。包体为 zip 压缩格式,整体约 13.2MB,页面显示文件总数为 0、文件类型明细暂无数据,实际文件构成需以解压结果为准。目前已有 1240 人浏览学习,说明该版本在同类工具中具有一定关注度。资源的价值在于将编辑器主体、插件管理入口与 emeet 插件集中打包,读者可据此获得较完整的 Notepad++ 初始环境,减少分别寻找插件管理器与扩展组件的时间,适合个人开发、教学环境或团队统一部署前的内容确认。
1. 一个安装包背后的选择题:安装版、便携版与插件兼容性
接手一台不联网的机器,任务通常很朴素:改一个配置文件、翻几十万行的日志、顺手把压缩过的 JSON 展开看结构。有人第一反应是装个几百兆的重型 IDE,结果打开一个 600MB 的访问日志直接无响应。换成 Notepad++ 安装包,双击、下一步、完成,三分钟落地,滚动依旧跟手。它活这么久靠的不是功能多,而是「打开任意文本文件」这件事几乎没有失败率。但真正决定后面几个月顺不顺的,不是安装包的大小,而是三件事:装安装版还是便携版、配置目录落在哪、插件管理器能不能正常拉插件。这三件事装完那一刻就定型了,后面所有「插件装不上」「升级完配置没了」的毛病,都是从这里长出来的。下面按安装落地、插件体系、编码处理、故障排查、批量部署拆。
2. 装完就能干活:路径、编码、关联打开的三项配置
安装向导一共七八个页面,绝大多数人一路「下一步」,然后在接下来的半年里反复为这个决定买单。这一章挑三个真正影响长期使用的位置说清楚:装在哪、第一次打开前改什么、怎么和资源管理器挂上钩。
2.1 安装路径里的空格和中文,到底坑在哪
默认路径是C:\Program Files\Notepad++这一类带空格的系统目录。问题不在于软件本身跑不起来,而在于插件目录和配置文件写入权限。Plugin Admin 下载插件后要往plugins目录解压,便携配置模式下还要往安装目录写config.xml,一旦落在受 UAC 保护的位置,普通权限的进程写不进去,表现出来的就是插件下载卡在最后一步、或者提示安装成功但重启后菜单里啥也没有。
我一般固定装到D:\tools\Notepad++这种无空格、无中文、非系统盘的路径。三种位置的差别可以摊开看:
| 安装位置 | 插件目录写入 | 配置文件可见性 | 迁移成本 |
|---|---|---|---|
C:\Program Files\...(默认) | 需提权,Plugin Admin 易失败 | 配置在%APPDATA%,和程序分离 | 换机要分别备份两处 |
D:\tools\Notepad++(推荐) | 当前用户可写 | 配合本地配置标记可全部落在安装目录 | 整个目录拷走即可 |
| 中文路径 / 带空格路径 | 多数情况可用 | 同上 | 部分插件的脚本路径解析会翻车 |
路径里带中文的坑更隐蔽:插件本身是 dll,加载不受影响,但一些依赖脚本路径的插件(比如跑外部解释器的那些)在拼接命令行时会把中文路径搞坏。装的时候顺手避开,比事后排查省事得多。
注意:已经装在默认路径也没必要重装,可以在设置里把插件和配置目录指到用户可写位置,但便携性会打折,尤其是你打算把这个环境复制到第二台机器时。
2.2 首选项里先改的四项,别等出问题再回来
装完第一次启动,先别急着打开文件,花两分钟进「设置 → 首选项」把下面四项定下来。这四项改完,后面九成的编码和格式纠纷不会发生。
| 设置位置 | 项 | 推荐值 | 理由 |
|---|---|---|---|
| 新建文档 | 编码 | UTF-8(不带 BOM) | 带 BOM 的 UTF-8 在 Linux 侧、脚本解析、JSON 读取时经常被当成非法字符 |
| 新建文档 | 换行符 | LF(或跟随项目约定) | 跨平台协作时 CRLF 混进 shell 脚本会直接执行失败 |
| 语言 | 默认语言 | 跟随扩展名,不设全局 | 全局锁定某个语言会让.conf、.env这类无扩展名文件着色错乱 |
| 制表符设置 | 制表符宽度 / 替换为空格 | 4 / 按项目定 | 缩进混用 Tab 和空格,diff 会变成整段重写 |
「新建文档」这一栏尤其关键。很多人第一次保存中文文件,发现别的工具打开是乱码,回头查半天,其实是新建时默认用了 ANSI,保存时又没有显式转换。UTF-8 无 BOM 是当下兼容面最广的默认值,除了少数只认 GBK 的老系统,基本不会出问题。
制表符那一项要看你在写什么。写 Python、写 YAML,替换成空格几乎是硬要求;写 Makefile 则必须保留 Tab,这时候建议单独在「语言」里给 Makefile 设一套独立规则,而不是全局关掉替换。
2.3 右键菜单与文件关联:两种挂法,别都开
安装向导里有个「在资源管理器右键菜单中显示」的勾选项,勾上之后右键任意文件会多出「Edit with Notepad++」。这个功能背后是往注册表写 Shell 扩展,属于全局生效。如果你同时还装了别的编辑器、并且它也抢了右键菜单,两套扩展偶尔会互相顶掉。
我一般只在安装时勾一次右键菜单,文件关联则单独在「设置 → 首选项 → 文件关联」里按扩展名挑,不选「全部关联」。理由很实际:把.html、.js这类文件全绑到 Notepad++ 上,双击网页源码会用编辑器打开而不是浏览器,没两天就得改回来。
关联完之后验证一下当前生效情况,命令行两行就够:
# 查看 .log 扩展名当前绑定的程序类型 cmd /c assoc .log # 查看该程序类型对应的实际可执行文件 cmd /c ftype txtfileassoc输出的是扩展名到文件类型的映射,ftype输出的是文件类型到命令行模板的映射,两者要能对上才说明关联真正生效。如果assoc有输出但双击还是弹「选择打开方式」,通常是用户级关联覆盖了系统级设置,去「默认应用」里重置一次比改注册表快。
3. 插件管理器到底怎么工作:索引、下载与 dll 落盘
Notepad++ 的插件不是可有可无的装饰。格式化 JSON、比对两份配置、批量转码、跑一段 Python 处理日志,这些日常活儿都靠插件补。而插件体系最容易出问题的地方,恰恰是那个看起来最傻瓜的「插件管理器」。
3.1 Plugin Admin 的三步流程:拉索引、下压缩包、解压落盘
内置的 Plugin Admin(菜单「插件 → Plugin Admin」)本质是个带界面的下载器,流程分三步:
第一步,启动时去拉一份插件索引文件,索引里记录每个插件的名称、描述、版本和对应的下载地址。第二步,你在「可用」页签里勾选插件,它按索引里的地址下载一个压缩包。第三步,把压缩包解到插件目录下对应的子文件夹里,重启主程序时由主程序扫描加载。
这三步里任何一步断了,界面表现都是「列表空的」或者「装了没反应」。索引拉不到通常是网络出口被限制,这种情况下界面会一直转圈或直接空白,跟插件本身没关系;压缩包下载失败会把错误弹在窗口底部,容易被忽略;解压落盘失败则是权限问题,上一章讲路径时已经埋过伏笔。
需要区分一下两套东西:早期有个独立的插件管理器项目,需要单独安装;后来内置的 Plugin Admin 接管了这件事,两者目录结构和索引来源不完全一样。如果你在网上看到教程让你先装「插件管理器插件」,那大概率是老资料,和新版内置的机制对不上,照着做容易装出两套互相干扰的目录。
3.2 装一个插件:以缩写展开类插件为例
搜「Notepad++ 插件」的人里,有相当一部分是在找前端写 HTML 时用的缩写展开工具,关键词经常被拼成 emeet 之类。这类插件的作用是把div.container>ul>li*3这样的一行缩写,按一次键展开成完整的嵌套标签结构,写静态页面时能省掉大量重复输入。它在 Notepad++ 生态里有对应实现,属于典型的「装上就回不去」的工具型插件。
安装路径很直接:
- 菜单「插件 → Plugin Admin」,切到「可用」页签;
- 在搜索框里输入插件名关键字,列表会实时过滤;
- 勾选目标插件,点右上角安装;
- 等待下载解压完成,按提示重启主程序;
- 重启后回「插件」菜单确认多出了对应条目。
第 5 步是验收点。如果重启后菜单里没有,别急着重装,先按 3.4 的三处位置查。另外这类缩写展开插件通常需要一个触发键,默认可能是 Tab 或 Ctrl+E,若和输入法、其他插件的快捷键冲突,表现为「按了没反应」,去「设置 → 快捷键管理」里搜插件名改一个不冲突的组合即可。
3.3 离线装插件:dll 到底该放哪一层
内网机器拉不到索引,只能手动装。手动装失败的原因九成是目录层级放错。正确的结构是「一个插件一个子目录,dll 放在子目录里」:
D:\tools\Notepad++\plugins\ ├── PluginA\ │ └── PluginA.dll └── PluginB\ ├── PluginB.dll └── PluginB\ └── 依赖的脚本或资源把 dll 直接丢在plugins根目录下,主程序扫描时不会加载。还有一点容易忽略:插件的位数必须和主程序一致,32 位主程序只能加载 32 位插件,混装的表现是启动时弹一个加载失败提示,或者插件静默消失。
装完用一段脚本核对目录结构和 dll 数量,比一个个点开文件夹看快得多:
# 列出插件目录下每个插件子目录及其 dll 数量 $npp = "D:\tools\Notepad++" Get-ChildItem "$npp\plugins" -Directory | ForEach-Object { # 只在子目录内找 dll,不递归,避免把依赖目录里的库算进来 $dlls = Get-ChildItem $_.FullName -Filter *.dll -File "{0,-24} {1} 个 dll" -f $_.Name, $dlls.Count }$npp换成你自己的安装路径。输出里 dll 数量为 0 的子目录,基本可以判定是解压时层级错了,或者压缩包本身就是给便携版准备的另一种结构。-File参数是为了排除同名目录,-Filter比-Include在本地磁盘上快不少。
3.4 插件的配置存在哪:备份时最容易漏的一层
插件装好只是开始,调完参数之后,这些设置并不会写进主程序的config.xml,而是各自落在插件配置目录里。默认位置在%APPDATA%\Notepad++\plugins\config下,每个插件一个子目录或者一个 ini 文件。
这意味着两件事。第一,你做整体备份时如果只拷了安装目录,插件配置会全部丢失,换台机器重装完插件,参数得重新调一遍。第二,如果你开了便携配置(下一章会讲),这个路径会整体平移到安装目录下,备份逻辑随之改变,很容易出现「以为备份了其实没备」的情况。
提示:调完插件参数后,先在配置目录里看一眼有没有新生成的文件,确认落点,再决定备份脚本要覆盖哪些路径。这一步花三十秒,能省掉后面重配半小时。
4. 中文编码与换行符:三个开关决定你会不会看到乱码
编码问题是这个软件被吐槽最多的地方,也是最冤枉的地方。它并没有「搞坏」你的文件,只是老老实实按你给的指令读和写。搞不清状态,就会一路踩坑。
4.1 编码菜单里的四种状态,先分清「当前」和「转换为」
菜单「编码」下有两组完全不同的操作,混淆这两组是乱码的最大来源:
- 「以 XXX 编码」:只是换一种方式解读当前字节,文件本身一个字节都没变。用来救「打开是乱码但文件其实是好的」这种情况。
- 「转换为 XXX 编码」:真的把文件内容按目标编码重写并保存。用错了会把原本正确的文件写坏。
四种常见状态的区别:
| 状态 | 特征 | 什么时候用 |
|---|---|---|
| UTF-8(无 BOM) | 跨平台通用,Linux 侧友好 | 默认首选,配置文件、脚本、JSON 都用它 |
| UTF-8 with BOM | 文件头多三个字节EF BB BF | 只在明确要求(部分老版本 Windows 工具)时用 |
| ANSI | 本机代码页,中文环境通常是 GBK | 打开老系统导出的日志、CSV 时临时解读 |
| UTF-16 LE/BE | 双字节,常带 BOM | 少数 Windows 内部导出文件 |
判断方法很简单:打开文件如果中文显示为方块或问号,先试「以 UTF-8 编码」重新解读;如果变成正常中文,说明文件本身没问题,只是被误判了。反过来,如果切到 UTF-8 后中文变乱码、切回 ANSI 又正常,那文件就是 GBK 编码的,用「以 ANSI 编码」看,别急着转。
真正需要转换的场景是:文件确实是 GBK,但你要交给只认 UTF-8 的系统。这时候用「转换为 UTF-8 无 BOM」并保存,转换前先把原文件复制一份,这是血泪经验——转错了没有撤销。
4.2 CRLF 和 LF:一行换行符能让脚本跑不起来
换行符的问题在 Windows 上几乎不可见,因为编辑器会自动处理显示,但文件交出去就露馅了。三个状态:
- CRLF(
\r\n):Windows 原生; - LF(
\n):Linux / macOS 原生; - CR(
\r):老式 Mac,现在基本只在历史文件里见到。
典型翻车场景是:在 Windows 上编辑一段要放到 Linux 服务器执行的 shell 脚本,保存成 CRLF,上传后执行报bad interpreter: /bin/bash^M。这个^M就是多出来的\r。修复方式是在编辑器里「编辑 → 档案格式转换 → 转换为 UNIX 格式」再保存,或者在服务器侧用sed -i 's/\r$//'批量清掉。
判断当前文件用的是哪种,看状态栏右侧那一小块,它会显示Windows (CR LF)或Unix (LF)。批量检查一个目录下所有文件,命令行更快:
# 统计目录下每个文件是否含 CRLF Get-ChildItem D:\conf -Filter *.sh -File | ForEach-Object { $bytes = [System.IO.File]::ReadAllBytes($_.FullName) # 相邻出现 0x0D 0x0A 即判定为 CRLF $hasCrlf = $false for ($i = 0; $i -lt $bytes.Length - 1; $i++) { if ($bytes[$i] -eq 13 -and $bytes[$i + 1] -eq 10) { $hasCrlf = $true; break } } "{0,-32} {1}" -f $_.Name, $(if ($hasCrlf) { "CRLF" } else { "LF" }) }13是回车符\r的十进制值,10是换行符\n。逐字节比对比读成字符串再匹配可靠,因为 PowerShell 读文本时会做换行归一化,反而看不出原始格式。
4.3 批量转码:别用编辑器一个个点
几十上百个配置文件需要从 GBK 统一转成 UTF-8 时,手动一个个开、转换、保存,既慢又容易漏。常见做法是交给脚本处理,编辑器只负责抽查结果。
# 把目录下所有 .conf 从 GBK(936) 转成 UTF-8 无 BOM $dir = "D:\conf" Get-ChildItem $dir -Filter *.conf -File | ForEach-Object { # 按 936 代码页读入原文 $text = [System.IO.File]::ReadAllText($_.FullName, [System.Text.Encoding]::GetEncoding(936)) # UTF8Encoding($false) 表示不写 BOM [System.IO.File]::WriteAllText($_.FullName, $text, (New-Object System.Text.UTF8Encoding($false))) "已转换: $($_.Name)" }GetEncoding(936)是简体中文的代码页,源文件是别的编码就换对应数字。UTF8Encoding($false)里的false控制是否写 BOM,这一点很关键——写成$true,每个文件头部会多三个字节,交给解析器时可能直接报错。跑之前先把目录整体复制一份,脚本里没有回滚逻辑。
5. 避坑排查:五类高频故障的现场记录
下面五条都是实际环境里反复出现的,按「现象 → 原因 → 解决」写,遇到时对照着查,不要一上来就重装。
5.1 Plugin Admin 列表一直是空的 / 一直转圈
现象:打开插件管理器,「可用」页签空白,或者进度条卡住不动,等十分钟也没结果。
原因:索引文件拉不下来。多数是网络出口限制了对插件索引地址的访问,少数是主程序版本太老、索引格式已经对不上。
解决:先确认浏览器能不能打开插件索引所在的地址,打不开就说明是网络问题,转手动装(3.3 节)。能打开但还是空列表,检查主程序是不是装了很久没更新,老版本内置的索引地址已经失效。另外注意,公司网络里的代理设置有时只对浏览器生效,编辑器进程走的是另一套配置,这种差异会让「浏览器能开、编辑器不能」的怪现象出现。
5.2 插件装完了,菜单里却没有
现象:Plugin Admin 提示安装成功,重启后「插件」菜单下找不到对应条目。
原因:三个可能——目录层级放错(dll 没在子目录里)、位数不匹配、插件依赖的运行库缺失。
解决:按顺序查。先用 3.3 的脚本看插件子目录里 dll 数量是否为 0;再看主程序是 32 位还是 64 位(「帮助 → 关于」里有),和插件包里的说明对一下;最后看插件是不是依赖 Python 运行时或者某个 C++ 运行库,缺依赖的插件在启动时通常不会弹窗提示,只是静默不加载。查依赖最直接的办法是看插件目录里有没有附带的说明文件。
5.3 升级主程序后,插件和配置全没了
现象:覆盖安装新版本后,之前装的插件消失,自定义快捷键、主题、语言高亮规则全回到默认。
原因:新版本安装到了另一个目录,或者安装时选了「不保留配置」。也有一种情况是旧版用的是安装目录下的便携配置,新版默认改成读%APPDATA%,两边路径不一致,看起来就像配置丢了。
解决:先别重装。去旧安装目录和%APPDATA%\Notepad++两处找config.xml、shortcuts.xml,找到哪个就用哪个。把旧目录下的plugins整个搬过去,重启验证。以后升级前固定做一次整目录备份,这个习惯能省掉大量返工。
5.4 中文保存后变成问号,或者别的系统打不开
现象:本地看着正常,保存后换台机器或者换个工具打开,中文全变问号、方块。
原因:保存时用的是 ANSI(本机 GBK),目标环境按 UTF-8 解析;或者反过来,源文件是 UTF-8,被当成 GBK 解读后又被「转换」保存了一次,双重破坏。
解决:先判断是「显示问题」还是「文件已经坏了」。用「以 UTF-8 编码」重新解读,如果中文恢复正常,说明字节没问题,只是解读方式错了,此时不要执行「转换为」,直接另存为 UTF-8 即可。如果怎么切都是乱码,说明文件已经被写坏,只能从备份或者版本库里找回。这也是为什么转换前必须先复制一份。
5.5 打开大文件卡死,或者保存时提示文件已被修改
现象:打开几百兆的日志文件,界面长时间无响应;或者文件在别处被改动后,这边保存时弹冲突提示。
原因:前者是编辑器把整个文件读进内存并做语法着色,文件大到一定程度就会拖垮界面;后者是编辑器检测到磁盘上的文件修改时间变了,防止覆盖别人的改动。
解决:大文件场景先在「设置 → 首选项 → 性能」里关掉语法高亮和自动完成,或者临时用「以只读方式打开」。冲突提示出现时,先点「否」,用「文件 → 重新加载」把磁盘上的最新内容读进来,再决定要不要覆盖。养成保存前看一眼标题栏有没有星号标记的习惯,能避免大部分误覆盖。
6. 便携化与批量部署:把配置目录当成代码来管
前面几章讲的都是单机怎么配好,这一章说怎么让这套配置跟着你走。核心是一个标记文件:在安装目录下放一个空的doLocalConf.xml,主程序启动时会改读同目录下的config.xml和plugins,不再去碰%APPDATA%。整个安装目录从此变成一个自包含的绿色包,拷到 U 盘、拷到另一台机器,双击就能用,插件和配置一个不落。
# 1) 在安装目录放本地配置标记,切换为便携模式 $npp = "D:\tools\Notepad++" New-Item -Path "$npp\doLocalConf.xml" -ItemType File -Force # 2) 迁移前先确认标记文件已生效:重启后该目录应出现 config.xml Test-Path "$npp\config.xml" # 3) 整目录镜像到目标位置,跳过更新缓存目录 robocopy $npp "E:\portable\Notepad++" /MIR /XD "$npp\updater" /R:1 /W:1三个参数值得说清楚:/MIR是镜像同步,目标端多出来的文件会被删掉,所以目标路径一定要写对;/XD排除更新缓存目录,那里面是临时下载的安装包,拷过去既占空间又可能触发更新提示;/R:1 /W:1把重试次数和间隔压到最低,遇到被占用的文件快速跳过而不是卡住。
第一次切便携模式时有个细节:原来的配置还在%APPDATA%\Notepad++下,切换后主程序会在安装目录重新生成一份默认配置。想保留旧设置,得先把config.xml、shortcuts.xml、userDefineLangs目录和plugins\config手动搬到新位置,再启动。这一步顺序错了,表现为「切换后所有设置回到默认」,其实是新配置覆盖了还没来得及搬的旧文件。
我现在的习惯是每配好一台机器,就把整个安装目录压成一个包,命名带上日期,扔进归档目录。清单固定四项:config.xml(全局设置)、shortcuts.xml(快捷键)、userDefineLangs(自定义语言高亮)、plugins\config(插件参数)。这四项齐了,换机器十分钟就能恢复到一模一样的状态,比重装一遍再凭记忆调参数快得多。吃过一次升级后配置全丢、又找不到旧版本的亏之后,我每次动主程序版本之前都强制先打这个包,再开始安装。希望帮到你。
本文还有配套的精品资源,点击获取