Emacs 直接编辑压缩打包文件

直接存取压缩文件

Emacs 会在你访问压缩文件的时候自动地进行解压缩,并在你修改了文件内容保 存的时候自动地压缩该文件。 Emacs 通过文件名来识别压缩文件,例如,以 `.gz' 结尾的文件是通过 `gzip' 来压缩的,而 `.bz2' 则表明是通过 `bzip2' 来压缩的。

自动解压缩与压缩对于所有的与文件内容有关的操作都适用,这包括访问、保存、 把他的内容插入到某个 buffer 中,作为 elisp 加载它以及作为 elisp byte compile 它。

这有时候会造成麻烦,比如你有一个普通文件但是文件名以 `.gz' 结尾,那么 用 Emacs 打开它就会遇到麻烦,因为 Emacs 试图用 gzip 去解压它,所以有时 候需要禁用这个功能: M-x auto-compression-mode 。你也可以通过定制变量 `auto-compression-mode' 来永久地禁用它。

访问打包的文件

一般文件名以 `.tar' 结尾的文件表示一个由 `tar' 打包产生的档案文件。 Emacs 会在 Tar mode 里面打开它们,这类似于 Dired ,它列出档案包里面的所 有文件,你可以像在 Dired 里面一样移动,并可以使用许多 Dired 命令。

如果 Auto Compression mode 是打开的,文件名以 `.tgz' 、`.tar.Z' 和 `.tar.gz' 等结尾的文件也会被自动解压缩并用 Tar mode 打开。

`e' 、`f' 或 <RET> 键会从打包档案中取出该文件进行编辑。 `v' 键会取出该 文件放到 View mode 中。 `o' 键取出文件并在另外一个 window 中打开。 `d' 键会把文件标记为删除,以便你待会用 `x' 键执行的时候真正地从打包档案中 删除它。 `u' 去掉标记。这些都和 Dired 差不多。 `C' 将从打包档案中把文 件拷贝到磁盘里面,而 `R' 则可以在打包档案里面重命名文件。 `g' 用磁盘上 档案文件里面的内容来恢复这个 buffer ,以撤销所有未做保存的修改。

`M' 、`G' 和 `O' 键分别改变文件的权限位、所属组以及所属用户。

如果你当前可以使用鼠标并且支持不同的颜色,当你把鼠标移动到文件名上的时 候它会高亮显示,并且你可以通过点击中键来打开它。

保存这个 Tar buffer 会写入一个新的 tar 打包档案到磁盘上,替换掉原来的 文件,其中包括了你对档案里面的内容所作的修改。

你并不需要安装 `tar' 程序就可以使用 Tar mode — Emacs 可以直接读写 tar 打包档案,不过,如果是经过压缩的 tar 文件,你仍然需要安装对应的压缩和 解压缩程序以便让 Emacs 能够先解压缩。

还有一个类似的 Archive mode 用于处理通过 `arc' 、 `jar' 、 `lzh' 、 'zip' 以及 `zoo' 产生的打包文档。

Archive mode 的键绑定和 Tar mode 很类似,不过多了 `m' 键用于标记文件一 执行接下来的操作以及 `M-<DEL>' 用来去掉所有的标记。还有 `a' 键用于打开 或者关闭详细信息的显示,因为有些打包档案的信息无法在一行中显示完。至于 重命名、改变权限位以及所有者之类的操作,是否可用是与特定的打包文档格式 有关的。

和 Tar mode 不一样的是, Archive mode 通过运行对应的程序来解包和重新打 包文件。关于对应的程序以及他们的参数,可以参加 `Archive' Customize group 。你需要这些程序来解包或者操纵档案里面的文件,但是如果仅仅是显示 一下打包文件的列表,这些程序也并不是必须的。