Skip to content

查看文件

Peach Commander 内置一个查看器,让你无需打开其他应用或更改文件即可查看文件内部。在光标下的项目上按 F3,查看器会立即打开,即使是非常大的文件也是如此。它会自动选择最佳的内容显示方式:可读文本、语法着色的代码、原始十六进制转储,或原尺寸图像。你也可以用 Quick View 在窗口内直接预览文件,或交给 macOS Quick Look。

查看文件

  1. 将光标移到活动面板中的某个文件。
  2. 按 F3(或从“文件”菜单选择“查看”)。查看器在自己的窗口中打开。
  3. 用工具栏切换内容的显示方式:文本、代码、十六进制、图像或渲染。保持在自动设置可让 Peach Commander 自行决定。
  4. 用箭头键、Page Up/Page Down 和滚动条滚动。对于长文本,打开缩略图(minimap)按钮以一目了然地查看和跳转整个文件。
  5. 按 N 跳到下一个所选文件,或用 Esc 关闭窗口。

右侧带缩略图的、显示文本文件的内置查看器 (图:查看文本文件,工具栏中带有表示形式选择器和缩略图。)

查找文本并更改编码

  • 按 Ctrl+F 在文件内搜索。按 F3 跳到下一个匹配,Shift+F3 跳到上一个。
  • 如果文本看起来乱码,点按工具栏中的“编码”(或按 E),循环切换文本编码直到正确显示;自动设置通常能正确判断。
  • 按 W 切换长行的自动换行。

行的备注

如果安装了备注插件,一条备注可以针对文件中的某一行,而不是整个文件。

  • 把光标放在该行上,选择显示 ▸ 为此行添加备注…(Cmd+Shift+N)。备注编辑器会打开,标题里带着文件名和行号。
  • 已有备注的行会作为备注分组出现在窗口下方的标记面板中,与搜索标记并列。按 Cmd+Ctrl+M 打开面板;双击条目即可跳到该行。
  • 备注本身与其他所有备注放在一起,因此备注总览和“查找文件”都能照常找到它们。删除在备注编辑器中进行——面板上的关闭按钮只是隐藏该分组。

Quick View 与 Quick Look

Quick View 在你使用的面板中显示实时预览,因此你可以在一侧继续浏览,同时在另一侧预览。

  1. 按 Ctrl+Q。非活动面板变为预览区域。
  2. 在活动面板中将光标移到不同文件上,逐一预览。
  3. 再次按 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.jarvineflower.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} 会在运行时替换。你自己的条目优先于内置条目;重用内置名称(cfrvineflowerprocyonjavap)会替换它,而不是新增一条。

快捷键

操作 快捷键
查看光标下的文件 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,若安装了相应的命令行工具还支持更多)。完整说明见编辑文件,在这里的用法相同。