查看文件
Peach Commander 内置一个查看器,让你无需打开其他应用或更改文件即可查看文件内部。在光标下的项目上按 F3,查看器会立即打开,即使是非常大的文件也是如此。它会自动选择最佳的内容显示方式:可读文本、语法着色的代码、原始十六进制转储,或原尺寸图像。你也可以用 Quick View 在窗口内直接预览文件,或交给 macOS Quick Look。
查看文件¶
- 将光标移到活动面板中的某个文件。
- 按 F3(或从“文件”菜单选择“查看”)。查看器在自己的窗口中打开。
- 用工具栏切换内容的显示方式:文本、代码、十六进制、图像或渲染。保持在自动设置可让 Peach Commander 自行决定。
- 用箭头键、Page Up/Page Down 和滚动条滚动。对于长文本,打开缩略图(minimap)按钮以一目了然地查看和跳转整个文件。
- 按 N 跳到下一个所选文件,或用 Esc 关闭窗口。
(图:查看文本文件,工具栏中带有表示形式选择器和缩略图。)
查找文本并更改编码¶
- 按 Ctrl+F 在文件内搜索。按 F3 跳到下一个匹配,Shift+F3 跳到上一个。
- 如果文本看起来乱码,点按工具栏中的“编码”(或按 E),循环切换文本编码直到正确显示;自动设置通常能正确判断。
- 按 W 切换长行的自动换行。
行的备注¶
如果安装了备注插件,一条备注可以针对文件中的某一行,而不是整个文件。
- 把光标放在该行上,选择显示 ▸ 为此行添加备注…(Cmd+Shift+N)。备注编辑器会打开,标题里带着文件名和行号。
- 已有备注的行会作为备注分组出现在窗口下方的标记面板中,与搜索标记并列。按 Cmd+Ctrl+M 打开面板;双击条目即可跳到该行。
- 备注本身与其他所有备注放在一起,因此备注总览和“查找文件”都能照常找到它们。删除在备注编辑器中进行——面板上的关闭按钮只是隐藏该分组。
Quick View 与 Quick Look¶
Quick View 在你未使用的面板中显示实时预览,因此你可以在一侧继续浏览,同时在另一侧预览。
- 按 Ctrl+Q。非活动面板变为预览区域。
- 在活动面板中将光标移到不同文件上,逐一预览。
- 再次按 Ctrl+Q,或按 Esc,让面板恢复为普通文件列表。
要获得由 macOS 本身处理的快速全屏预览,按 Cmd+Y(Quick Look)。再次按 Cmd+Y 或 Space 将其关闭。
侧栏中的信息页¶
侧栏(显示 > 预览面板,或 Cmd+Shift+P)有一个 信息 页,像访达的信息侧栏那样显示光标所在的项目。
- 预览会填满侧栏宽度:把侧栏拉宽,预览也随之变大。 拖动侧栏左边缘可加宽或收窄,宽度会被记住。
- 这是真正的 macOS 预览,而不是小缩略图:快速查看能显示的所有格式在这里都能用,多页文档还可以在预览中逐页翻阅。
- 下方依次是名称、种类和大小,然后是创建时间、修改时间以及所在文件夹。
移动光标时,名称和信息会立即更新;预览稍后跟上,因此按住方向键快速穿过长目录时,不会为经过的每一行都启动一次预览。
反编译 Java class 文件¶
启用 Java Decompiler 插件后,对 .class 文件按 F3 会显示可读代码而不是二进制数据 —— 包括 JAR 或 ZIP 里的 class 文件,你可以进入压缩包直接查看,无需解压。
插件本身不含任何反编译器。它只是驱动你自己安装的引擎,而且引擎随时可换:
- CFR(MIT 许可)与 Vineflower(Apache 2.0)生成 Java 源代码。把
cfr.jar或vineflower.jar放进引擎文件夹即可。 - Procyon(Apache 2.0)是第三个生成源代码的反编译器。
- javap 完全不需要下载 —— 它随任何 JDK 一起提供,显示的是字节码而非 Java 源代码。
不会替你下载任何东西:这些是第三方程序,各有自己的许可,Peach Commander 既不获取也不更新它们。查看器中的 引擎文件夹… 按钮会打开它们应放置的文件夹,并在其中留下一份说明,列出每个引擎及其下载地址。除 javap 外都需要已安装 Java。
用查看器顶部的菜单切换引擎;所选引擎立即生效,结果会被保留,因此在同一文件上比较两个引擎没有等待。
源代码带语法高亮,另有两个按钮继续处理:存储为… 写入文件,在编辑器中打开 交给 Mac 上打开 .java 的程序。结果非常大时会不加高亮直接显示,以便立即出现而不是等上一会儿;状态行会说明。
结果会缓存到磁盘,因此再次打开看过的文件是即时的;缓存键包含文件的大小与日期以及引擎的参数,所以重新编译过的类或改动过的选项会重新反编译。所选引擎按文件类型记住。配置项可用 extends = cfr 继承内置引擎,只覆盖参数 —— 想为同一引擎保留两套预设时很方便。
打开 对比 会开出第二个窗格,带自己的引擎菜单。两个反编译器出错的位置不同,因此并排查看往往比纠结该信哪一个更快;在一侧选 javap,字节码就会挨着源代码。两个窗格共用缓存,所以在已经跑过的引擎之间切换是即时的。
对整个 .jar、.apk 或 .dex 按 F3 会一次全部反编译,并在源代码旁边给出包树。树上方的搜索框搜遍每个类——这正是单个类回答不了的问题:还不知道在哪个类里时,某个字符串、调用或常量究竟出现在何处。命中会收窄这棵树,第一个命中直接停在它那一行。用 Enter 打开 JAR 仍然是当作压缩包浏览,两个动作依然分开。
还有第二条更直接的路:把光标放在 .class 文件或整个压缩包上,选 反编译为源代码(命令菜单、右键菜单,或 ⌘⇧J)。类会被反编译,结果作为普通的 .java 文件在另一个文件面板中打开。从那里起整个文件管理器都用得上——F3 用 Peach Commander 自己的 Java 高亮显示它们,Alt+F7 跨文件搜索,F5 把它们复制出去,比较和打标签也跟别的文件一样。多数工作里这比一个自带窗口更好用,所以插件自己的树可以在 设置 ▸ 反编译器 里关掉。
第二个插件为 .NET 做同样的事:对托管的 .dll、.exe 或 .winmd 按 F3 会把其中的类型显示为 C#,将程序集反编译为源代码(⌘⇧N)把它们放进文件面板,搜索也能同样地看进程序集内部。它驱动 ILSpy(MIT,dotnet tool install -g ilspycmd)产出源代码,或用 Mono 的 monodis 产出 IL——相当于 .NET 版的 javap。原生 .dll 扩展名相同却没有源代码可显示,所以插件在打开前先检查,把它留给内置查看器。
设置页里有一个 检查引擎 按钮,值得按一下:别处的“已安装”只表示文件在那里,而没有 JDK 的 Mac 上的 Java 引擎虽然存在却跑不起来。这个检查会向每个引擎询问版本,并说明哪些确实能用。
Android 同样支持:对 .dex 文件按 F3 会使用 jadx(Apache 2.0,brew install jadx),把 Dalvik 字节码还原成 Java。为此只需一份引擎描述 —— 同一套机制,不同格式。
插件默认关闭,直到你打开它(设置 ▸ 插件)—— 多数人从不打开 .class 文件,而且没有引擎它也没有用处。
要添加自己的引擎,在引擎文件夹中新建 decompilers.ini:
[myengine]
name = My Decompiler
kinds = class
tool = java
args = -jar {engine} {input}
engine = my-decompiler.jar ; a bare name is looked up in this folder
output = stdout
timeout = 30 ; seconds before the engine is stopped
{input}、{engine} 和 {outdir} 会在运行时替换。你自己的条目优先于内置条目;重用内置名称(cfr、vineflower、procyon、javap)会替换它,而不是新增一条。
快捷键¶
| 操作 | 快捷键 |
|---|---|
| 查看光标下的文件 | F3 |
| 仅查看光标下的文件(忽略已标记文件) | Shift+F3 |
| 在外部查看器中打开 | Option+F3 |
| 在查看器内查找 | Ctrl+F |
| 为光标所在行添加备注 | Cmd+Shift+N |
| 显示或隐藏标记面板 | Cmd+Ctrl+M |
| 下一个 / 上一个匹配 | F3 / Shift+F3 |
| 在另一面板中 Quick View | Ctrl+Q |
| Quick Look(macOS 预览) | Cmd+Y |
| 关闭查看器或 Quick View | Esc |
备注¶
- 查看器是只读的。要更改文件,请改用编辑器(参阅“编辑文件”)。
- 非常大的文件也会毫无延迟地打开:文本以快速、可滚动的视图打开,十六进制视图无论多大都直接从磁盘流式读取。
- 在文件夹上按 F3 会看到其内容和总大小的摘要,而非文件字节。
- 渲染模式显示网页等带格式的内容;十六进制模式将原始字节与其字符并排显示,便于检查二进制文件。
- 在渲染模式下也可以选择并复制文本,查找会在渲染后的页面中搜索。对渲染页面无法适用的按钮 —— 格式化、编码、全选、选择项和跳转 —— 会变灰,而不是按了没反应。
- 格式化按钮会重新缩进结构化文件(JSON、XML、HTML、INI、YAML,若安装了相应的命令行工具还支持更多)。完整说明见编辑文件,在这里的用法相同。