Emacs作为图片浏览器

Posted Emacs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Emacs作为图片浏览器相关的知识,希望对你有一定的参考价值。

本文介绍了 Emacs 的另一强大之处,如何把它当作一个图片浏览器

image-mode

当用Emacs打开一张图片时,Emacs会自动进入image-mode,并显示出图片来. (如果你的操作系统是windows,默认是不支持显示图片的,那么请参考 )

image-mode 中,按下 n (image-next-file) 可以看同一个目录中的下一张图片,按下 p (image-previous-file) 则能查看同一目录下的上一张图片.

尤其需要说明的是,Emacs能将zip等压缩文件当成目录来看待,因此你可以在dired中进入zip包并查看zip包中的图片, 但是当你想通过 np 来查看zip同下/上一张图片时,会发现查看的并不会是zip中的图片,而是zip文件所在目录下的图片.

你甚至可以按下 r (image-rotate) 来旋转图片.

如果查看图片是类似gif这样的动态图片,刚打开图片时并不会自动播放该动画,你可以按下回车就可以让它动起来了.

浏览动态图片时,image-mode还提供了以下一些快捷键:

  • f (image-next-frame): 查看下一帧图片

  • b (image-previous-frame): 查看上一帧的图片

  • F (image-goto-frame): 查看指定帧的图片

  • a + (image-increase-speed): 加快图片播放速度

  • a - (image-decrease-speed): 降低图片播放速度

  • a 0 (image-reset-speed): 还原图片播放速度

  • a r (image-reverse-speed): 重新播放图片

image-dired

Emacs自带了一款名为 image-dired 的插件,它可以以缩略图的方式显示出目录中的图片,也可以浏览想看的图片,甚至能为图片加上标签说明!

下面是image-dired的视图,来自于Xah Lee的


进入image-dired

进入image-dired有两种方式:

一种是在dired buffer中mark好要显示缩略图的那些图片,然后按下 C-t d (image-dired-display-thumbs). Emacs会打开一个名为 *image-dired* 的buffer,并且以缩略图的形式显示出那些被mark的图片.

还有一种方式是直接运行 M-x image-dired 然后输入包含图片的目录. 这种情况下Emacs会打开 *image-dired* buffer,并以缩略图的形式显示出目录下 所有 的图片.

image-dired相关操作

image-dired的相关操作基本都是在 *image-dired* buffer中进行的.

*image-dired* buffer中,你可以通过方向键选择各个缩略图,然后按下 RET (image-dired-display-thumbnail-original-image) 就能够在另一个window中显示出相应图片了,且若图片太大的话,还会自动缩减该图片大小以适应window的尺寸. 若想要以原始尺寸来显示图片,则只需要 C-u RET 即可.

你还可以让image-dired调用外部图片浏览器来浏览该图片,方法是按下 C-RET (image-dired-thumbnail-display-external). Emacs会使用 image-dired-external-viewer 中指定的浏览器来浏览图片.

为了方便浏览图片,你可以按下 SPC (image-dired-display-next-thumbnail-original) 来查看下一张缩略图对应的图片, 还可以按下 DEL (image-dired-display-previous-thumbnail-original) 来显示上一张缩略图对应的图片.

除了浏览图片之外,image-dired还提供了一些管理图片的功能. 比较常用的功能有:

  • d (image-dired-flag-thumb-original-file): 在dired中标记对应的图片文件为待删除的文件.

  • C-d (image-dired-delete-char): 删除对应的缩略图(但不会删除原图片文件!)

  • tt (image-dired-tag-thumbnail): 为缩略图添加标签

  • tr ((image-dired-tag-thumbnail-remove)): 为缩略图删除标签

  • c (image-dired-comment-thumbnail): 为缩略图添加(修改)说明

  • R (image-dired-rotate-original-right): 将图片向右旋转(修改原图片而不仅仅是显示),需要借助外部工具JpegTRAN

  • L (image-dired-rotate-original-left): 让图片向左旋转(修改元图片而不仅仅是显示).需要借助外部工具JpegTRAN

使用Emacs作为图片浏览器

通过上面的介绍可以看出,Emacs基本上可以满足一般的图片浏览需求了. 我们可以通过一小段脚本将Emacs包装成为一个简单的图片浏览器:

#!/bin/bash

if [ $# -eq 1 ];then
    file=$(pwd)
else
    file=$1
fi

if [ -d $file ];then
    emacs -q --eval "(image-dired \"${file}\")"
else
    emacs -q $file
fi

我把这段小脚本起名为 emage.shemacs-image 的意思.

若你直接运行该脚本,则会用 image-dred 显示当前文件夹下的所有图片缩略图.

同时你也可以给这个脚本带上一个表示文件夹或者图片的参数, 若参数为文件夹则会用 image-dired 浏览指定文件夹下的所有图片, 若参数为文件,则会直接用emacs来浏览该图片.

这里需要说明一下的是,为什么我这里用 emacs -q 而不是用 emacsclient 呢? 是因为两个原因:

  1. 当目录中的图片太多时, image-dired 消耗大量的时间来生成缩略图,而这期间会造成Emacs卡死. 所以我这里用 emacs 新启动一个进程.

  2. 当开启了evil插件后,会发现有些 image-mode*image-dired* buffer中的快捷键会被evil覆盖掉,不太好用. 所以我这里用 -q 选项来阻止emacs读取配置文件.



本期编辑: aborn & geekplux

欢迎投稿

投稿方式有以下两种(推荐第一种):

  1. 向该项目提交 Pull Request (投稿的文章请放在 tougao/这个目录下);

  2. 发邮件到投稿邮箱:860202632@qq.com; geekplux@gmail.com; aborn@aborn.me (建议以 org 文档附件形式投稿)。

投稿时请:

  • 注明你的昵称,或 ID,总之是你想显示的作者名;

  • 如投稿的文章已经再其他地方发表,可以附上原文链接

以上是关于Emacs作为图片浏览器的主要内容,如果未能解决你的问题,请参考以下文章

Emacs-入门

想试支持 XWidget/Webkit 版的 Emacs 的来吧

运行 emacs 时将自动填充模式作为次要模式打开

10.Emacs进阶之图片模式

作为2016年的开发者,你需要学习Emacs(或者Vi)

如何使用 IPython 作为我的 Emacs Python 解释器?